Request_To_Send (CPI-C)
La chiamata Request_To_Send (nome funzione cmrts) notifica al programma partner che il programma locale vuole inviare dati.
Sintassi
CM_ENTRY Request_To_Send(
unsigned char FAR *conversation_ID,
CM_INT32 FAR *return_code
);
Parametri
conversation_ID
Parametro fornito. Specifica l'identificatore per la conversazione. Il valore di questo parametro è stato restituito da Initialize_Conversation o Accept_Conversation.
return_code
Codice restituito da questa chiamata. I codici restituiti validi sono elencati più avanti in questo argomento.
Codici restituiti
CM_OK
Codice restituito primario; la chiamata eseguita correttamente.
CM_OPERATION_NOT_ACCEPTED
Codice restituito primario; un'operazione precedente in questa conversazione è incompleta.
CM_OPERATION_INCOMPLETE
Codice restituito primario; l'operazione non è stata completata (la modalità di elaborazione non è bloccata solo) ed è ancora in corso. Il programma può eseguire Wait_For_Conversation per attendere il completamento dell'operazione o Cancel_Conversation per annullare l'operazione e la conversazione. Se Specify_Windows_Handle è stato chiamato, l'applicazione deve attendere la notifica da un messaggio di Microsoft® Windows® e non chiamare Wait_For_Conversation.
CM_PROGRAM_PARAMETER_CHECK
Codice restituito primario; il valore specificato da conversation_ID non è valido.
CM_PROGRAM_STATE_CHECK
Codice restituito primario; la conversazione non è nello stato RECEIVE, SEND, SEND_PENDING, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE.
CM_PRODUCT_SPECIFIC_ERROR
Codice restituito primario; si è verificato un errore specifico del prodotto ed è stato registrato nel log degli errori dei prodotti.
Modifiche di stato
La conversazione può trovarsi in uno degli stati seguenti: RECEIVE, SEND, SEND_PENDING, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE.
Non esiste alcuna modifica dello stato.
In risposta a questa richiesta, il programma partner può modificare la conversazione in stato RECEIVE inviando una delle chiamate seguenti:
Ricevere con tipo di ricezione impostato su CM_RECEIVE_AND_WAIT
Send_Data con tipo di invio impostato su CM_SEND_AND_PREP_TO_RECEIVE
Il programma partner può anche ignorare la richiesta di invio.
Lo stato della conversazione viene modificato in SEND per il programma locale quando il programma locale riceve uno dei valori seguenti tramite il parametro status_received di una chiamata di ricezione successiva:
CM_SEND_RECEIVED
CM_CONFIRM_SEND_RECEIVED e il programma locale risponde con una chiamata confermata
Commenti
La notifica di richiesta per l'invio viene ricevuta dal programma partner tramite il parametro request_to_send_received delle chiamate seguenti:
-
La notifica request-to-send viene inviata immediatamente al programma partner. CPI-C non attende fino a quando il buffer di invio riempie o viene scaricato. Di conseguenza, la notifica da inviare a richiesta può uscire dalla sequenza. Ad esempio, se il programma locale si trova nello stato SEND e genera la chiamata Prepare_To_Receive seguita dalla chiamataRequest_To_Send, il programma partner, nello stato RECEIVE, può ricevere la notifica di richiesta da inviare prima di ricevere la notifica di invio. Per questo motivo, request_to_send può essere segnalato a un programma tramite la chiamata di ricezione .
Dopo aver ricevuto una notifica di richiesta da inviare, l'unità logica partner (LU) mantiene la notifica fino a quando il partner invia una chiamata che restituisce request_to_send_received. L'LU mantiene una sola notifica di richiesta per invio per conversazione. Pertanto, il programma locale può emettere più chiamate Request_To_Send rispetto a quelle gestite in modo esplicito dal programma di transazione partner (TP).