Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Extract_Client_Context - Client-Kontext abfragen

&pagelevel(4)&pagelevel

Mit dem Aufruf Extract_Client_Context erhält ein Programm den Client-spezifischen Kontext, den openUTM als letztes gesendet hat.

Der mit Set_Client_Context() an openUTM übergebene Kontext wird bis zum Ende der Conversation gesichert, falls er nicht durch einen neuen Kontext überschrieben wird. Wird vom Client ein Wiederanlauf angefordert, so wird der Kontext zusammen mit der letzten Dialog-Nachricht an den Client zurück übertragen, den openUTM aktuell für diese Conversation gespeichert hat.

Der Client-Kontext wird von openUTM nur gesichert, wenn eine UTM-Benutzerkennung mit Restartfunktionalität angemeldet ist, da nur in diesem Fall ein Vorgangs-Wiederanlauf möglich ist.

Der Aufruf Extract_Client_Context ist im Zustand "Send" und "Receive" und im Zustand "Reset" unmittelbar nach einem Receive-/Receive_Mapped_Data-Aufruf erlaubt.

Extract_Client_Context ist nicht Bestandteil der CPI-C Spezifikation, sondern eine zusätzliche Funktion des UPIC-Trägersystems.


Syntax
CMECC (conversation_ID, buffer, requested_length, data_received, received_length, return_code)


Parameter

--> conversation_ID

Identifikation der bereits initialisierten Conversation (wird vom Initialize-Aufruf geliefert).

--> buffer

Puffer, in dem die Daten empfangen werden.
Falls der Rückgabewert von data_received CM_NO_DATA_RECEIVED ist oder received_length=0, ist der Inhalt von buffer undefiniert.

--> requested_length

Maximale Länge der Daten, die empfangen werden können.

<-- data_received

Gibt an, ob das Programm den Client-Kontext vollständig empfangen hat.

Falls das Ergebnis (return_code) nicht den Wert CM_OK hat, ist der Wert von data_received undefiniert.

data_received kann folgende Werte annehmen:

CM_COMPLETE_DATA_RECEIVED

Der Client-Kontext wurde vollständig empfangen.

CM_INCOMPLETE_DATA_RECEIVED

Der Client-Kontext ist nicht vollständig vom Programm empfangen worden.

CM_NO_DATA_RECEIVED

Es wurden keine Daten empfangen.

<-- received_length

Länge der empfangenen Daten. Ist der Wert von received_length = 0, so liegt kein Client-Kontext vor. Der Wert von received_length ist undefiniert, falls das Ergebnis (return_code) nicht den Wert CM_OK hat.

<-- return_code

Ergebnis des Funktionsaufrufs.

Ergebnis ( return_code )

CM_OK

Aufruf OK

CM_PROGRAM_PARAMETER_CHECK

Der Wert in conversation_ID ist ungültig oder der Wert für requested_length ist größer als 32767 oder kleiner 1.

Der Wert der conversation_ID ist ungültig, weil die Funktion nach Ende der Conversation mehr als einmal aufgerufen wurde oder weil noch keine Conversation existierte (nach dem Enable_UTM_UPIC-Aufruf ist noch kein Initialize_Conversation Aufruf erfolgt).

CM_PRODUCT_SPECIFIC_ERROR

Die UPIC-Instanz konnte nicht gefunden werden.

CM_PROGRAM_STATE_CHECK

Die Conversation ist nicht im Zustand "Reset", "Send" oder "Receive".

Hinweis

  • Falls eine Teilnachricht mit Receive-/Receive_Mapped_Data-Aufruf(en) empfangen wurde (data_received hat den Wert CM_COMPLETE_DATA_RECEIVED), so werden die Parameter client_context und client_context_length bei einem nachfolgenden Receive-/ Receive_Mapped_Data-Aufruf zurückgesetzt.

  • Der Wert der conversation_ID bleibt für diesen Funktionsaufruf nach dem Ende einer Conversation so lange gültig, bis ein Initialize_Conversation-Aufruf oder ein Extract_Client_Context-Aufruf erfolgt ist.

  • Der interne Puffer besitzt eine beschränkte Grösse von derzeit 8 Byte.

  • openUTM sendet derzeit immer einen Client Context der Länge 8 Byte zurück. D.h., wenn von UPIC ein gültiger Client-Kontext empfangen worden ist, so hat received_length die Länge 8.
    Falls an openUTM ein Client-Kontext mit einer Länge < 8 Byte gesendet worden ist, dann wird der Client-Kontext von openUTM mit binär null auf die Länge 8 aufgefüllt.

  • Ist der Wert für requested_length kleiner als die Länge des intern gespeicherten client_context, so wird der vom Anwendungsprogramm zur Verfügung gestellte Puffer vollständig gefüllt und data_received auf CM_INCOMPLETE_DATA_RECEIVED gesetzt. Folgt unmittelbar ein weiterer CMECC-Aufruf mit einem genügend großem Wert für requested_length (d.h. >= 8), so wird der Puffer mit einem solchen Aufruf komplett gelesen.

Verhalten im Fehlerfall

CM_PROGRAM_STATE_CHECK

Programm ändern.

CM_PROGRAM_PARAMETER_CHECK

Programm ändern.

CM_PRODUCT_SPECIFIC_ERROR

Das Betriebssystem kann nicht genügend Speicherplatz für interne Puffer bereitstellen. Überprüfen Sie Ihr Programm auf zu hohe Speicherplatzanforderung und starten Sie ggf. Ihr System neu.

Funktionsdeklaration: Extract_Client_Context
CM_ENTRY Extract_Client_Context (
                           unsigned char         CM_PTR   conversation_ID, 
                           unsigned char         CM_PTR   buffer,
                           CM_INT32              CM_PTR   requested_length, 
                           CM_DATA_RECEIVED_TYPE CM_PTR   data_received, 
                           CM_INT32              CM_PTR   received_length, 
                           CM_RETURN_CODE        CM_PTR   return_code )