Request_To_Send (CPI-C)
L’appel Request_To_Send (nom de fonction cmrts) avertit le programme partenaire que le programme local souhaite envoyer des données.
Syntaxe
CM_ENTRY Request_To_Send(
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’est pas à l’état RECEIVE, SEND, SEND_PENDING, CONFIRM, CONFIRM_SEND ou CONFIRM_DEALLOCATE.
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 peut se trouver dans l’un des états suivants : RECEIVE, SEND, SEND_PENDING, CONFIRM, CONFIRM_SEND ou CONFIRM_DEALLOCATE.
Il n’y a aucun changement d’état.
En réponse à cette demande, le programme partenaire peut remplacer la conversation par l’état RECEIVE en émettant l’un des appels suivants :
Recevoir avec le type de réception défini sur CM_RECEIVE_AND_WAIT
Send_Data avec le type d’envoi défini sur CM_SEND_AND_PREP_TO_RECEIVE
Le programme partenaire peut également ignorer la demande d’envoi.
L’état de la conversation devient SEND pour le programme local lorsque le programme local reçoit l’une des valeurs suivantes via le paramètre status_received d’un appel de réception suivant :
CM_SEND_RECEIVED
CM_CONFIRM_SEND_RECEIVED et le programme local répondent avec un appel confirmé
Remarques
La notification de demande d’envoi est reçue par le programme partenaire via le paramètre request_to_send_received des appels suivants :
-
La notification de demande d’envoi est envoyée immédiatement au programme partenaire. CPI-C n’attend pas que la mémoire tampon d’envoi se remplit ou soit vidée. Par conséquent, la notification de demande d’envoi peut arriver hors séquence. Par exemple, si le programme local est à l’état SEND et émet le Prepare_To_Receive appel suivi de l’appel Request_To_Send , le programme partenaire, à l’état RECEIVE, peut recevoir la notification de demande d’envoi avant de recevoir la notification d’envoi. Pour cette raison, request_to_send peuvent être signalés à un programme via l’appel de réception .
Lors de la réception d’une notification de demande d’envoi, l’unité logique partenaire (LU) conserve la notification jusqu’à ce que le partenaire émet un appel qui retourne request_to_send_received. L’unité lu conserve une seule notification de requête à envoyer par conversation. Ainsi, le programme local peut émettre plus d’appels Request_To_Send que ce qui est explicitement géré par le programme de transaction partenaire (TP).