Hallo alle zusammen,
ich habe folgendes Szenario und weiss nicht, wie ich hier vorgehen soll.
Verscheidene verteilte Programme (also z.B. auf zwei Rechnern jeweils ein Programm) kommunizieren mit Nachrichten untereinander. Dazu hat jedes Programm einen Thread, der auf einem Port lauscht. Wenn nun eine Verbindung aufgebaut wird und eine Nachricht empfangen wird, weiss ich nicht, wie ich vorgehen soll.
Es gibt mehrere verschiedene Nachrichten, die auch verschiedene Abarbeitungen in Gang setzen. Diese erweitern alle einen Basis Message Typ:
(Ich hoffe, der Pseudocode reicht so aus, um das Problem zu beschreiben)
Der Empfang läuft bisher so ab:
Hier stellt sich schon das Problem, das jetzt als Rückmeldung den Typ Message hab und nicht die genaue Art also zum Beispiel MessageType1. Allerdings ist ja vorher nicht klar, welchee Nachrichttyp nun als nächstes kommt.
Mein Ansatz war bisher:
Allerdings müsste ich dann meine Basis-Message Typ so aufbohren, das eine Generalisierung keinen Sinn macht. Habt Ihr für solch ein Szenario Tipps oder ein Pattern? Ich hab leider kein passendes gefunden.
Viel Dank für Hilfe,
Daishi1002
ich habe folgendes Szenario und weiss nicht, wie ich hier vorgehen soll.
Verscheidene verteilte Programme (also z.B. auf zwei Rechnern jeweils ein Programm) kommunizieren mit Nachrichten untereinander. Dazu hat jedes Programm einen Thread, der auf einem Port lauscht. Wenn nun eine Verbindung aufgebaut wird und eine Nachricht empfangen wird, weiss ich nicht, wie ich vorgehen soll.
Es gibt mehrere verschiedene Nachrichten, die auch verschiedene Abarbeitungen in Gang setzen. Diese erweitern alle einen Basis Message Typ:
(Ich hoffe, der Pseudocode reicht so aus, um das Problem zu beschreiben)
Code:
class MessageType1 extends Message
class MessageType2 extends Message
class MessageType3 extends Message
Der Empfang läuft bisher so ab:
Code:
Class Dispatcher
while(true){
listenToPort
verbindung = socket.accept()
new Message = startMessageReceiving(verbindung) //Neuer Thread
}
Hier stellt sich schon das Problem, das jetzt als Rückmeldung den Typ Message hab und nicht die genaue Art also zum Beispiel MessageType1. Allerdings ist ja vorher nicht klar, welchee Nachrichttyp nun als nächstes kommt.
Mein Ansatz war bisher:
Code:
if (Message.typ = Typ1)
MessageType1 MyType1 = Message.toType1();
if (Message.typ = Typ2)
MessageType2 MyType2 = Message.toType2();
[...]
Allerdings müsste ich dann meine Basis-Message Typ so aufbohren, das eine Generalisierung keinen Sinn macht. Habt Ihr für solch ein Szenario Tipps oder ein Pattern? Ich hab leider kein passendes gefunden.
Viel Dank für Hilfe,
Daishi1002