Wir arbeiten an der Integration von zwei verschiedenen Anwendungen, die gleichzeitig laufen und Daten austauschen. Eine Anwendung stellt die Daten zur Verfügung, die andere berechnet einige Werte auf der Grundlage von externen Systemen und den Daten und muss diese an die erste Anwendung zurückgeben.
Wir verwenden diese Bibliothek, um die Daten zwischen den Anwendungen auszutauschen: http://grouplab.cpsc.ucalgary.ca/cookbook/index.php/Toolkits/Networking
Die Bibliothek ermöglicht es im Grunde, ein gemeinsames Wörterbuch zu erstellen, das von jeder Anwendung abgefragt werden kann (solange sie den Ort des gemeinsamen Wörterbuchs kennt).
Was also passieren sollte, ist, dass Programm A Programm B einige Daten zur Verfügung stellt und Programm B diese Daten verwendet und andere Daten an Programm A zurückgibt.
Mein Problem ist, wie bringe ich das Programm A dazu, auf die Antwort von B zu warten. Konkret kann ich ein Objekt in das gemeinsame Wörterbuch aufnehmen, das andere Programm wird über eine Änderung im Wörterbuch benachrichtigt, es kann einige Attribute berechnen und das Objekt im Wörterbuch aktualisieren. Programm A kann benachrichtigt werden, aber ich möchte, dass Programm A wartet, bis es diese Antwort zurückerhält - die Aktion von Programm A sollte auf dem zurückgegebenen Wert basieren.
Eine sehr hässliche Art und Weise sehe ich dies getan werden kann, ist eine Endlosschleife innerhalb der Funktion, die hält Abfragen des Wörterbuchs, um zu sehen, wenn das Objekt udpated wurde - wenn es aus der Schleife zu brechen und verwenden Sie das Objekt und seine berechneten Attribute. Kennt jemand eine schönere Lösung?