PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Projekt in C++ unter Linux



ufosworld
12-04-2007, 09:21
Aufgabe:
Ich soll ein Programm entwickeln das während der Laufzeit dynamisch 3 Libraries mit Funktionen in den Speicher lädt.

Nun sollen Daten aus einer Eingabedatei in die erste Librarie geschoben werden, bzw die erste Librarie lädt diese Daten aus einer Datei,
von Netzwerkschnittstelle oder irgendwo anders her die Quelle ist praktisch u.a. in der Input Library definiert (also z.b. Dateiname, Port, Ip-Adresse).

Nach überprüfung ob die Daten konform sind, sollen diese an die zweite Library übergeben werden.

In dieser befindet sich eine Funktion die die Daten verarbeitet (z.b. Reihenfolge ändern, Werte manipulieren oder ähnliches)

Nach der Verarbeitung sollen die Daten an die dritte Library übergeben werden, diese sendet die Manipuilierten Daten
dann an eine im der Library festgelegte Schnittstelle (z.b. Console, Textdatei, Netzwerkanschluss... usw)


Problem ist nun:

Die Libraries kommen aus einem Pool, d.h. sie werden Variable "hintereinandergesteckt" und es gibt beliebig viele...
=> mittels einer Config File lege ich fest welche Librarys geladen werden sollen.

Ausserdem weiss ich nicht welche Inhalte die Daten haben.


Ziel ist es nun einen Datenumsetzer zu erstellen, bei dem das Input, Work und Output Modul dynamisch während der Laufzeit geladen wird.
Das laden der Libs unter Linux und das auslesen der Config-XML File habe ich bereits gelöst.. bzw ich nehme dafür Tinyxml und dlopen

Das Problem das ich aber jetzt noch habe. wie schicke ich die Daten von einer Library zur nächsten. (In jeder Library kommt eine Funktion vor)

Ziel is es also eine Art universellen Übergabeparameter zu finden.

Wie sind nun die Übergaben zwischen den Libraries umzusetzen?

Gibt es sowas wie einen allgemeinen Übergabeparameter z.b. (Stream) oder Bytearray, Bytestream

wenn ja... wo finde ich Beispiele

mfg UFO

p.s. es existieren noch keine Librarys.... diese sollen erst nachdem das Grundgerüst steht entwickelt werden.

anda_skoa
12-04-2007, 14:31
Wie sehen denn die Daten so aus?
Reiner Text?
Haben die Daten eine fixe Struktur? Etwas was sich in Klassen abbilden läßt?

Ciao,
_

ufosworld
12-04-2007, 15:01
na das ist ja das Problem...

ich habe keine Ahnung wie die Datenformate aussehn... bzw was da in den Files drin is...

Mein Betreuer meinte, dies sei auch nicht nötig zu wissen... da ich ja nicht die Module schreibe, sondern nur das Grundgerüst zum Laden der Module

Grob gesagt. Ich muss ein Programm schreiben, das mir Module reinlädt und die Daten dann übergibt.

Hätte gedacht sowas wie Bytearrays, das jeweils dann die Module die Daten intern umcodieren müssen dann bearbeiten und dann wieder in bytearray codieren... soo nee Art Stream....


Eine anderer möglichkeit wäre, das die Daten direkt von Modul zu Modul übergeben werden. damit geht aber die universelle kombinierbarkeit der Module flöten...

Ziel ist es dann mal einen Modulpool zu haben aus dem beliebig Eingabe, Arbeits und Ausgabemodule kombiniert werden können... ob es Sinn macht, das da eventl Module kombiniert werden, die nicht zueinanderpassen... soll mal dahingestellt bleiben... bzw is nicht mein Problem, sondern das Problem desjenigen der die dann in der Configfile zusammenstöpselt ;-)

anda_skoa
12-04-2007, 19:11
Du könntest dir jstreams
http://www.englishbreakfastnetwork.org/apidocs/apidox-kdesupport/kdesupport-apidocs/strigi/src/streams/html/index.html

ansehen und eventuell das Konzept "libfind" von Jörg Schilling (Aufbau von Pipes&Filters Ketten mittels Plugins)
http://www.opensolaris.org/jive/thread.jspa?messageID=107191

Ciao,
_