Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: SocketAdapter - Protokoll - Wie aufbauen?

  Alt 13. Nov 2007, 18:01
Um ein ähnliches Problem habe ich mir auch schon Gedanken gemacht.
Angenommen man möchte EMails per SMTP versenden.
Sobald der Socket offen ist, benötigt man ja nur noch Lese- und Schreibfunktionen.
Welcher Art von Socket oder ob man über einen Proxyserver geht oder die Daten verschlüsselt ist ja mal egal.
Man könnte sich auch folgendes Szenarios vorstellen:
Code:
SMTP-Protokoll <---> [HTTP Packer/Entpacker] <---> [TCP Socket] <-> Netzwerk
SMTP-Protokoll <---> [Secure Socket Layer] <--> [Serielle Schnittstelle]
An den Stellen, die mit "<--->" gekennzeichnet sind, besteht eine bidirektionale Schreib-/Leseverbindung.
Ich nenne dies mal eine "Pipeline".
Die Pipeline könne man über folgendes Interface implementieren:
Delphi-Quellcode:
  IPipeline = interface;
  IPipelineCallback = interface(IUnknown)
     procedure DataAvailable(Sender:IPipeline);
  end;

  IPipeline = interface(IUnknown)
      function Read(var Buffer; Count: Longint): Longint;
      function Write(const Buffer; Count: Longint): Longint;
      function GetReadSize: Integer; // Anzahl der Bytes, die mit Read gelesen werden können
      procedure SetCallBack(cb:IPipelineCallback);
  end;
Damit der Benutzer von IPipeline nicht ständig fragen muss, ob Daten zum Lesen vorhanden ist, gibt es das Interface IPipelineCallback.
Mit diesem Ansatz könnte man nun Blöcke hintereinander schalten.
Code:
SMTP-Protokoll <---> [StreamCompressor/Dekompressor] <---> TCP Socket
Der StreamCompressor/Dekompressor würde also einerseits das Interface IPipeline implementieren, damit es vom
SMTP-Protokoll benützt wird,
andererseits benützt es ein IPipeline-Interface, das von TCP Socket implementiert wird.
Auf diese Weise entsteht ein Baukastensystem, deren Teile man zu Ketten zusammenschalten kann.
Andreas
  Mit Zitat antworten Zitat