Hey,
ich habe ein nettes Protokoll geschrieben mit dem sich Daten wunderbar über die normalen TCustomWinSockets versenden und empfangen lassen, ohne, dass die Pakete falsch getrennt oder zusammengesetzt werden. Auch eine on-the-fly Kompression und Verschlüsselung ist möglich.
Bisher muss der Programmierer für jedes Socket ein TBufferData Record anlegen und im OnClientRead Ereigniss "HandleSocketData(BufferData, Socket)" aufrufen. Wenn ein vollständiges Paket angekommen ist wird eine Callback Funktion für die ein Pointer im BufferData Record bereitssteht aufgerufen.
Das ganze kommt mir nun doch etwas kompliziert vor. Ich überlege nun aber, ob ich alle Funktionen in eine Klasse packen soll, oder ob ich in der
Unit eine globale Liste erstelle, den Parameter der HandleData Funktion auf das Socket beschränke und das Erstellen / Ermitteln des dazugehörigen Records intern verwalte. Der Programmierer soll eigentlich nämlich auch keinen Zugriff auf die einzelnen Elemente erhalten.
Eine Klasse wäre dafür ganz nett, wenn ich mal so auf die private Deklarationen schiele, anderseits habe ich das Problem, dass ich einmal eine Klasse für die TCustomWinSockets machen will und die selbe Klasse nochmal für ein selbstdefiniertes TClientSocket Object. Bisher habe ich mir mit überladenen Funktionen geholfen. Geht dies auch in Klassen? Der Klasse würde das Socket im Constructor übergeben. Die Verwaltung der Klassen muss der Programmierer zwar weiterhin selbst vornehmen, aber die Datenverarbeitung würde sich auf ein Klasse.HandleData beschränken, wobei natürlich vom Programmierer darauf geachtet werden muss, welche Klasse zu welchem Socket gehört. Auch einfacher als die Callback Funktionen wären die klassichen OnBLABLABLA Methoden.
Welche Vorgehensweise würdet ihr empfehlen?
Gruß