Ereignisfunktion des SOA-Service
Ereignisfunktion des SOA-Service
Funktion, die durch einen Task des SOA-Service aufgerufen wird
Details
- Name: Typ Beschreibung
- aObjHdl:
handleDeskriptor des Task-Objekts - aEvtType:
intEreignis-Typ - Siehe: SOA-Service , c16_procedure , Task , Job
Diese Funktion wird je nach Betriebsart des Task des SOA-Service zu unterschiedlichen Zeitpunkten aufgerufen. Arbeitet der Task in der Betriebsart TIME (siehe mode ), erfolgt der Aufruf beim Start des SOA-Service und anschließend in regelmäßigen Abständen. Die Zeitabstände sind in der Einstellung time_delay_default bzw. im Task -Objekt angegeben. Bei der Betriebsart SOCKET erfolgt der Aufruf erst bei einem Verbindungsaufbau über den Socket.
- Ereignisaufrufe Betriebsart TIME: Ereignisaufrufe Betriebsart SOCKET
: 
Damit die Funktion aufgerufen werden kann, muss sie in dem Eintrag c16_procedure eingetragen werden. Die Funktion selbst muss mit folgendem Funktionskopf definiert sein:
sub <Name>
(
aObjHdl : handle; // Task-object
aEvtType : int; // Event-type
)
aObjHdl
In dem Parameter aObjHdl wird der Deskriptor des verwendeten Task -Objekt übergeben. Jedes Ereignis hat ein eigenes Objekt, welches über eine Reihe von Eigenschaften verfügt. Der Typ des Deskriptors ist in allen Fällen _HdlSvcTime oder _HdlSvcSocket. Der Untertyp ist abhängig davon, ob der Job als Thread (_JobThread) oder als Prozess (_JobProcess) gestartet wurde.
aEvtType
In aEvtType wird der Ereignistyp übergeben. Beim TIME-Service gibt es nur einen Typ von Ereignis, aEvtType enthält daher immer Null. Beim SOCKET-Service gibt es vier unterschiedliche Ereignistypen.
_SckEvtConnectBei einer neuen Verbindung wird dieses Ereignis ausgelöst. Falls die gesamte Verarbeitung in der Ereignisfunktion durchgeführt werden kann, sollte der Socket am Ende mitJobClose ()geschlossen werden (EigenschaftSvcSckHandledes übergebenen Objekts). Damit ist die Verbindung beendet und es gibt auch keine weiteren Ereignisse mehr für diese Verbindung. Um den Socket für einen weiteren Datenaustausch zu verwenden, muss mit Keep-Alives gearbeitet werden (siehe Verarbeitungshinweise )._SckEvtDisconnectFalls der Socket der Verbindung nicht aktiv mitSckClose ()geschlossen wurde, wird nach dem Trennen der Verbindung in jedem Fall dieses Ereignis aufgerufen. Der Socket ist beim Aufruf der Ereignisprozedur bereits geschlossen._SckEvtDataBleibt der Socket nach dem Ende der Ereignisprozedur noch geöffnet, kann dieses Ereignis auftreten, wenn innerhalb der Keep-Alive-Zeit neue Daten empfangen werden._SckEvtTimeoutBleibt der Socket nach dem Ende der Ereignisprozedur noch geöffnet, kann dieses Ereignis auftreten, wenn innerhalb der Keep-Alive-Zeit keine neue Daten mehr empfangen wurden.
Eine Funktion mit identischem Funktionskopf muss angegeben werden, wenn mit der Anweisung JobStart () ein Job gestartet wird. Beim Aufruf der Ereignisfunktion wird dann ein Job -Objekt übergeben. Der Typ des Deskriptors ist in allen Fällen _HdlJob, wobei der Untertyp _JobThread oder _JobProcess sein kann.
Innerhalb des SOA-Service können nur A+ Prozeduren verarbeitet werden. Der Aufruf von Prozeduren mit dem Befehl CallOld () wird ignoriert.