Conversations lancées à distance
Les applications qui souhaitent recevoir des conversations initiées à distance (attachements entrants) émettent un verbe RECEIVE_ALLOCATE . Pour prendre en charge le point de synchronisation, le verbe RECEIVE_ALLOCATE est modifié de plusieurs façons comme suit :
Le paramètre sync_level retourné du verbe RECEIVE_ALLOCATE peut prendre une valeur de AP_SYNCPT, en spécifiant que la conversation est une conversation de point de synchronisation. La valeur du paramètre sync_level peut également être déterminée en émettant un verbe GET_ATTRIBUTES sur la nouvelle conversation.
La prise en charge de la réception des données PIP (Program Initiation Parameters) est ajoutée par un nouveau paramètre au verbe RECEIVE_ALLOCATE :
Le paramètre pip_incoming est défini par l’application pour indiquer si elle est prête à accepter les données PIP entrantes et est retourné par Host Integration Server pour indiquer si les données PIP sont disponibles pour être reçues. Si l’application ne souhaite pas recevoir de données PIP, ce membre doit être défini sur AP_NO, la valeur par défaut, avant d’émettre le verbe RECEIVE_ALLOCATE . S’il accepte les données PIP, ce membre doit être défini sur AP_YES. Une fois le verbe RECEIVE_ALLOCATE terminé, ce membre est défini sur AP_YES si les données PIP sont disponibles pour être reçues par l’application et pour AP_NO sinon.
Si des données PIP sont disponibles, l’application peut les recevoir en émettant l’un des verbes de réception des données à l’achèvement du verbe RECEIVE_ALLOCATE . Pour les conversations de base, ces verbes de réception incluent RECEIVE_AND_POST, RECEIVE_AND_WAIT et RECEIVE_IMMEDIATE. Lors des conversations de base, les données PIP sont retournées, y compris l’en-tête du flux de données général (GDS) pour les données PIP (identificateur GDS 0x12F5). Pour les conversations mappées, ces verbes de réception incluent MC_RECEIVE_AND_POST, MC_RECEIVE_AND_WAIT et MC_RECEIVE_IMMEDIATE. Sur les conversations mappées, Host Integration Server supprime l’en-tête GDS de 4 octets et retourne les données PIP uniquement.
Pour les conversations de base, si l’application émet un verbe SEND_ERROR, DEALLOCATE ou TP_ENDED avant la réception des données PIP, les données PIP sont ignorées. Pour les conversations mappées, si l’application émet un verbe MC_SEND_ERROR, MC_DEALLOCATE ou TP_ENDED avant la réception des données PIP, les données PIP sont ignorées.
Si des données PIP sont reçues pour un tp qui ne peut pas ou ne souhaite pas les recevoir, la conversation est rejetée avec un code de retour principal de AP_ALLOCATION_ERROR et un code de retour secondaire de AP_PIP_NOT_ALLOWED.