Partager via


Oubli implicite

Les sessions de point de synchronisation LU 6.2 peuvent utiliser une optimisation des flux de messages architectes appelés oublis implicites. Lorsque le protocole spécifie qu’un en-tête de présentation FORGET (PS) est requis, le flux de données suivant sur la session implique qu’un FORGET a été reçu, même si ce n’est pas le cas. Dans la situation normale, le TP est conscient du prochain flux de données lorsque des données sont reçues ou envoyées sur l’une de ses conversations de point de synchronisation.

Toutefois, il est possible que le dernier message qui circule soit dû à la libération de la conversation. Dans ce cas, le TP ignore quand le prochain flux de données sur la session se produit. Pour fournir au TP cette notification, les verbes DEALLOCATE et MC_DEALLOCATE sont modifiés pour permettre au TP d’inscrire une fonction de rappel qui sera appelée :

  • Lors de la première transmission de flux normal (demande ou réponse) sur la session utilisée par la conversation.

  • Si la session n’est pas lié avant tout autre flux de données.

  • Si la session est interrompue anormalement en raison d’une panne de contrôle de liaison de données (DLC).

    La procédure de rappel peut prendre n’importe quel nom, car l’adresse de la procédure est passée dans la DLL APPC.

    Notez que les verbes DEALLOCATE et MC_DEALLOCATE se termineront probablement avant l’appel de la routine de rappel. La conversation est considérée comme étant à l’état RESET et aucun autre verbe ne peut être émis à l’aide de l’identificateur de conversation. Si l’application émet un verbe TP_ENDED avant le prochain flux de données sur la session, la routine de rappel n’est pas appelée.

    Les verbes DEALLOCATE et MC_DEALLOCATE sont modifiés comme suit pour prendre en charge l’oubli implicite :

  • Un nouveau membre, le rappel, est ajouté pour permettre au TP de spécifier l’adresse de la fonction à appeler sur le prochain flux de données sur la session utilisée par la conversation en cours de libération. Si ce membre a la valeur NULL, aucune notification n’est fournie. Un fournisseur fournit normalement cette fonction de rappel.

  • Les verbes DEALLOCATE et MC_DEALLOCATE contiennent également un membre corrélateur qui est retourné en tant que l’un des paramètres lorsque la fonction de rappel est appelée. L’application peut utiliser ce paramètre de n’importe quelle manière (par exemple, comme pointeur vers un bloc de contrôle au sein de l’application).

    Host Integration Server permet aux fournisseurs de services de libérer les conversations immédiatement après l’envoi de données en spécifiant le membre de type dans les verbes SEND_DATAet MC_SEND_DATAcomme AP_SEND_DATA_DEALLOC_FLUSH, AP_SEND_DATA_DEALLOC_SYNC_LEVEL, AP_SEND_DATA_DEALLOC_ABEND et AP_SEND_DATA_DEALLOC_CONFIRM. Toutefois, les verbes SEND_DATA et MC_SEND_DATA ne contiennent pas la fonction de rappel forget implicite. Les TPs qui souhaitent recevoir une notification d’oubli implicite doivent émettre un verbe DEALLOCATE ou MC_DEALLOCATE explicitement.