====== Genesys Connect ====== Ich stelle mir vor, dass laufende Genesys-Anwendungen einen ARexx-vergleichbaren Dienst starten und sich dort anmelden. Eine andere Genesys-Anwendung kann nun an einem Rechner die laufenden Genesys-Anwendungen erfragen und erhält eine Liste zurück. Nun kann sie sich mit einer Anwendung verbinden. Der Wunsch nach einer Verbindung kann durch ein Passwort gesichert sein bzw. abgelehnt werden. Zu einer erfolgreichen Verbindung gehört die Anwendung, ein optionales Passwort und ein Antwortkanal. Nun können an die Anwendung Nachrichten gesendet werden. Diese sind entweder Text (default) oder Binär, oder [[notes:cmd:start|Kommandos]] service : GCon::Connect( "localhost" ); response : GCon::CreateResponseChannel(); // An diesen Kanal darf nur der Channel Daten schicken, der auch gefragt wurde. Er ist nicht öffentlich. connection : service.Connect( "void", "Passwort" ); SecondConnection = connection.create( "MENU TEXT.NEW" ); // Textnachricht mit der Hoffnung auf eine eigene Connection SecondConnection.SetResponseChannel( response ); SecondConnection.send( "INSERT TEXT 'Hallo Welt'" ); // Sendet an void an den erstellten Text die Nachricht "INSERT TEXT 'Hallo Welt'" Eine Anwendung die GenesysConnect fähig ist, meldet sich automatisch am GenesysConnect-Service an. Existiert dieser nicht, wird er hochgefahren. Der Service verwaltet die Nachrichten. Werden zuviele Nachrichten an die Anwendung geschickt, darf er neue Nachrichten ablehnen. Geht eine neue Nachricht ein, wird eine Callback-Funktion gerufen. Die Anwendung muss sich die Nachricht dann abholen und nach der Bearbeitung freigegeben, so dass sie vom Service gelöscht wird. Reagiert eine Anwendung nicht auf die Callback-Funktion, kann über die PID nachgeguckt werden, ob sie noch existiert. Ggfs. werden dann alle Nachrichten mit CONNECTION_LOST beantwortet.