Set_Deallocate_Type (CPI-C)

La llamada Set_Deallocate_Type (nombre de función cmsdt) especifica cómo se va a desasignar la conversación.

Sintaxis

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

Parámetros

conversation_ID
Parámetro proporcionado. Especifica el identificador de la conversación. El valor de este parámetro lo devolvió Initialize_Conversation o Accept_Conversation.

deallocate_type
Parámetro proporcionado. Especifica cómo realizar la desasignación. Los valores posibles son:

CM_DEALLOCATE_ABEND
Indica que la conversación se va a desasignar anómala e incondicionalmente. Un programa debe especificar CM_DEALLOCATE_ABEND cuando encuentra un error que impide que se complete correctamente una transacción.

Si la conversación está en estado SEND, CPI-C envía el contenido del búfer de envío de la unidad lógica local (LU) al programa asociado antes de desasignar la conversación. Si la conversación está en estado RECEIVE, se pueden purgar los datos entrantes. Para una conversación básica en estado SEND, se puede producir un truncamiento de registros lógicos.

CM_DEALLOCATE_CONFIRM
Se usa para enviar al programa de partners el contenido del búfer de envío de UNIDADES locales y una solicitud para confirmar la desasignación.

Esta solicitud de confirmación de desasignación se envía mediante Deallocate o Send_Data con el tipo de envío establecido en CM_SEND_AND_DEALLOCATE. La conversación se desasigna normalmente cuando el programa asociado emite Confirmado, respondiendo a la solicitud de confirmación.

CM_DEALLOCATE_FLUSH
Se usa para enviar el contenido de las LU locales al búfer de envío al programa asociado antes de desasignar la conversación normalmente.

CM_DEALLOCATE_SYNC_LEVEL
Usa el nivel de sincronización de conversaciones para determinar cómo desasignar la conversación. Un nivel de sincronización predeterminado se establece mediante Initialize_Conversation y se puede invalidar mediante Set_Sync_Level.

Si el nivel de sincronización de la conversación es CM_NONE, el valor predeterminado es que el contenido del búfer de envío de LU local se envíe al programa asociado y la conversación se desasigna normalmente.

Si el nivel de sincronización de la conversación es CM_CONFIRM, el contenido del búfer de envío de UNIDADES locales y una solicitud para confirmar que la desasignación se envía al programa asociado. Esta solicitud de confirmación de desasignación se envía mediante Deallocate o Send_Data con el tipo de envío establecido en CM_SEND_AND_DEALLOCATE. La conversación se desasigna normalmente cuando el programa asociado emite la llamada confirmada , respondiendo a la solicitud de confirmación.

return_code
Código devuelto de esta llamada. Los códigos de retorno válidos se enumeran más adelante en este tema.

Códigos de retorno

CM_OK
Código de retorno principal; la llamada se ejecutó correctamente.

CM_PROGRAM_PARAMETER_CHECK
Código de retorno principal; se produjo una de las siguientes acciones:

  • El valor especificado por conversation_ID o deallocate_type no es válido.

  • El parámetro deallocate_type especifica CM_DEALLOCATE_CONFIRM, pero el nivel de sincronización de conversaciones se establece en CM_NONE.

  • La dirección de una variable no es válida.

    CM_PRODUCT_SPECIFIC_ERROR
    Código de retorno principal; se produjo un error específico del producto y se ha registrado en el registro de errores de productos.

Cambios de estado

La conversación puede estar en cualquier estado excepto RESET.

No hay ningún cambio de estado.

Comentarios

Esta llamada invalida el tipo de desasignación predeterminado establecido por Initialize_Conversation o Accept_Conversation. El tipo de desasignación predeterminado es CM_DEALLOCATE_SYNC_LEVEL.

Las instrucciones de desasignación especificadas por esta llamada surten efecto cuando se emite Deallocate o cuando el tipo de envío se establece en CM_SEND_AND_DEALLOCATE y se emite Send_Data .

Puede establecer deallocate_type en CM_FLUSH si el nivel de sincronización de la conversación está establecido en CM_NONE o CM_CONFIRM.

El valor CM_DEALLOCATE_FLUSH es funcionalmente el mismo que CM_DEALLOCATE_SYNC_LEVEL con el nivel de sincronización de conversaciones establecido en CM_NONE.

El valor CM_DEALLOCATE_CONFIRM es funcionalmente el mismo que CM_DEALLOCATE_SYNC_LEVEL con el nivel de sincronización de conversaciones establecido en CM_CONFIRM.