Confirmed (CPI-C)

L’appel Confirmé (nom de la fonction cmcfmd) répond à une demande de confirmation du programme partenaire. Il informe le programme partenaire que le programme local n’a pas détecté d’erreur dans les données reçues. Étant donné que le programme qui émet la demande de confirmation attend une confirmation, Confirmé synchronise le traitement des deux programmes.

Syntaxe


CM_ENTRY Confirmed(   
  unsigned char FAR *conversation_ID,    
    CM_INT32 FAR *return_code              
);  

Paramètres

conversation_ID
Paramètre fourni. Spécifie l’identificateur de la conversation. La valeur de ce paramètre a été retournée par Initialize_Conversation ou Accept_Conversation.

return_code
Code retourné par cet appel. Les codes de retour valides sont répertoriés plus loin dans cette rubrique.

Codes de retour

CM_OK
Code de retour principal ; l’appel a été exécuté avec succès.

CM_OPERATION_NOT_ACCEPTED
Code de retour principal ; une opération précédente sur cette conversation est incomplète.

CM_OPERATION_INCOMPLETE
Code de retour principal ; l’opération n’est pas terminée (le mode de traitement n’est pas bloquant uniquement) et est toujours en cours. Le programme peut émettre des Wait_For_Conversation pour attendre la fin de l’opération, ou Cancel_Conversation d’annuler l’opération et la conversation. Si Specify_Windows_Handle a été appelé, l’application doit attendre la notification d’un message Microsoft® Windows® et ne pas appeler Wait_For_Conversation.

CM_PROGRAM_PARAMETER_CHECK
Code de retour principal ; la valeur spécifiée par conversation_ID n’est pas valide.

CM_PROGRAM_STATE_CHECK
Code de retour principal ; la conversation n’était pas dans l’état CONFIRM, CONFIRM_SEND ou CONFIRM_DEALLOCATE lorsque le programme a émis cet appel.

CM_PRODUCT_SPECIFIC_ERROR
Code de retour principal ; une erreur spécifique au produit s’est produite et a été enregistrée dans le journal des erreurs des produits.

Changements d’état

La conversation doit se trouver dans l’un des états suivants lorsque le programme a des problèmes confirmés :

  • CONFIRMER

  • CONFIRM_SEND

  • CONFIRM_DEALLOCATE

    Le nouvel état est déterminé par l’ancien état, c’est-à-dire l’état de la conversation lorsque le programme local a émis Confirm. L’ancien état est indiqué par la valeur status_received de l’appel de réception précédent. Le tableau suivant récapitule les changements d’état possibles lorsque return_code est défini sur CM_OK.

Ancien état Nouvel état
CONFIRMER RECEIVE
CONFIRM_SEND SEND
CONFIRM_DEALLOCATE RESET

Les autres codes de retour n’entraînent aucun changement d’état.

Remarques

Une demande de confirmation est émise par l’un des appels suivants dans le programme partenaire :

  • Confirmer.

  • Prepare_To_Receive si le type de préparation à la réception est défini sur CM_PREP_TO_RECEIVE_CONFIRM ou pour CM_PREP_TO_RECEIVE_SYNC_LEVEL et que le niveau de synchronisation des conversations est défini sur CM_CONFIRM.

  • Libérez si le type de désallocation est défini sur CM_DEALLOCATE_CONFIRM ou sur CM_DEALLOCATE_SYNC_LEVEL et que le niveau de synchronisation des conversations est défini sur CM_CONFIRM.

  • Send_Data dans les circonstances suivantes :

    • Le type d’envoi est défini sur CM_SEND_AND_CONFIRM.

    • Le type d’envoi est défini sur CM_SEND_AND_PREPARE_TO_RECEIVE et le type de préparation à la réception est défini sur CM_PREPARE_TO_RECEIVE_CONFIRM.

    • Le type d’envoi est défini sur CM_SEND_AND_PREPARE_TO_RECEIVE, le type de préparation à la réception est défini sur CM_PREPARE_TO_RECEIVE_SYNC_LEVEL et le niveau de synchronisation est défini sur CM_CONFIRM.

    • Le type d’envoi est défini sur CM_SEND_AND_DEALLOCATE et le type de libération est défini sur CM_DEALLOCATE_CONFIRM.

    • Le type d’envoi est défini sur CM_SEND_AND_DEALLOCATE, le type de désallouer est défini sur CM_DEALLOCATE_SYNC_LEVEL et le niveau de synchronisation est défini sur CM_CONFIRM.

    Une demande de confirmation est reçue par le programme local via le paramètre status_received de Réception. Le programme local peut émettre confirm uniquement si le paramètre status_received est défini sur l’une des valeurs suivantes :

  • CM_CONFIRM_RECEIVED

  • CM_CONFIRM_SEND_RECEIVED

  • CM_CONFIRM_DEALLOC_RECEIVED