Set_Deallocate_Type (CPI-C)
La chiamata Set_Deallocate_Type (nome funzione cmsdt) specifica come la conversazione deve essere deallocata.
Sintassi
CM_ENTRY Set_Deallocate_Type(
unsigned char FAR *conversation_ID,
CM_INT32 FAR *deallocate_type,
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.
deallocate_type
Parametro fornito. Specifica come eseguire la deallocazione. I valori possibili sono:
CM_DEALLOCATE_ABEND
Indica che la conversazione deve essere deallocata in modo anomalo e incondizionato. Un programma deve specificare CM_DEALLOCATE_ABEND quando viene rilevato un errore che impedisce il completamento di una transazione.
Se la conversazione è in stato SEND, CPI-C invia il contenuto del buffer di invio dell'unità logica locale (LU) al programma partner prima di deallocare la conversazione. Se la conversazione è in stato RECEIVE, i dati in ingresso possono essere eliminati. Per una conversazione di base nello stato SEND, il troncamento del record logico può verificarsi.
CM_DEALLOCATE_CONFIRM
Usato per inviare il programma partner il contenuto del buffer di invio delle unità di rete locale e una richiesta per confermare la deallocation.
Questa richiesta di conferma della deallocazione viene inviata da Deallocate o da Send_Data con il tipo di invio impostato su CM_SEND_AND_DEALLOCATE . La conversazione viene deallocata normalmente quando il programma partner genera conferma, risponde alla richiesta di conferma.
CM_DEALLOCATE_FLUSH
Usato per inviare il contenuto delle unità LU locali invia il buffer al programma partner prima di deallocare la conversazione normalmente.
CM_DEALLOCATE_SYNC_LEVEL
Usa il livello di sincronizzazione delle conversazioni per determinare come deallocare la conversazione. Un livello di sincronizzazione predefinito viene stabilito da Initialize_Conversation e può essere sottoposto a override da Set_Sync_Level.
Se il livello di sincronizzazione della conversazione è CM_NONE, il valore predefinito, il contenuto del buffer di invio delle UNITÀ locali viene inviato al programma partner e la conversazione viene deallocata normalmente.
Se il livello di sincronizzazione della conversazione è CM_CONFIRM, il contenuto del buffer di invio dell'UNITÀ locale e una richiesta per verificare che la deallocation venga inviata al programma partner. Questa richiesta di conferma della deallocazione viene inviata da Deallocate o da Send_Data con il tipo di invio impostato su CM_SEND_AND_DEALLOCATE . La conversazione viene deallocata normalmente quando il programma partner genera la chiamata confermata , rispondendo alla richiesta di conferma.
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_PROGRAM_PARAMETER_CHECK
Codice restituito primario; si è verificato uno dei seguenti:
Il valore specificato da conversation_ID o deallocate_type non è valido.
Il parametro deallocate_type specifica CM_DEALLOCATE_CONFIRM, ma il livello di sincronizzazione delle conversazioni è impostato su CM_NONE.
L'indirizzo di una variabile non è valido.
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ò essere in qualsiasi stato tranne RESET.
Non esiste alcuna modifica dello stato.
Commenti
Questa chiamata esegue l'override del tipo deallocate predefinito stabilito da Initialize_Conversation o Accept_Conversation. Il tipo deallocate predefinito è CM_DEALLOCATE_SYNC_LEVEL.
Le istruzioni di deallocation specificate da questa chiamata hanno effetto quando Deallocate viene emesso o quando il tipo di invio è impostato su CM_SEND_AND_DEALLOCATE e Send_Data viene rilasciato.
È possibile impostare deallocate_type su CM_FLUSH se il livello di sincronizzazione della conversazione è impostato su CM_NONE o CM_CONFIRM.
Il valore CM_DEALLOCATE_FLUSH è funzionalmente uguale a CM_DEALLOCATE_SYNC_LEVEL con il livello di sincronizzazione delle conversazioni impostato su CM_NONE.
Il valore CM_DEALLOCATE_CONFIRM è funzionalmente uguale a CM_DEALLOCATE_SYNC_LEVEL con il livello di sincronizzazione delle conversazioni impostato su CM_CONFIRM.