Compartir a través de


Cambio de estados de conversación (CPI-C)

Un cambio en el estado de la conversación puede deberse a:

  • Una llamada realizada por el programa de transacciones local (TP).

  • Una llamada realizada por el TP del asociado.

  • Una condición de error.

    En el ejemplo siguiente se muestra cómo las llamadas a Common Programming Interface for Communications (CPI-C) pueden cambiar el estado de la conversación de SEND a RECEIVE y de RECEIVE a SEND.

Nota

Cualquier TP puede enviar o recibir datos, independientemente de si es el TP invocado (el TP que inició la conversación) o el TP invocable (el TP que respondió a una solicitud para iniciar una conversación).

En este ejemplo se muestra cómo las llamadas CPI-C pueden cambiar el estado de la conversación. En esta tabla, cada estado de conversación aparece en negrita y precede a las llamadas CPI-C que se usan mientras están en ese estado.

Emitido por el TP de invocación Emitido por el TP invocable
Estado de conversación: RESET
Initialize_Conversation
Estado de conversación: INITIALIZE
Set_Sync_Level
(sync_level=CM_CONFIRM)
Asignar
Estado de conversación: SEND
Send_Data
Prepare_to_Receive Estado de conversación: RESET
Accept_Conversation
Estado de conversación: RECEIVE
(status_received= CM_CONFIRM_SEND_RECEIVED)
Estado de la conversación: CONFIRM_SEND
Confirm
Estado de conversación: SEND
(return_code=CM_OK) Send_Data
Estado de conversación: RECEIVE Confirm
(status_received= CM_CONFIRM_RECEIVED)
Estado de la conversación: CONFIRM
Request_To_Send
Confirmado
Estado de conversación: RECEIVE (return_code=CM_OK)
(request_to_send_received= CM_REQ_TO_SEND_RECEIVED)
Prepare_To_Receive
Recepción
(status_received= CM_CONFIRM_SEND_RECEIVED)
Estado de la conversación: CONFIRM_SEND
Confirmado
Estado de conversación: SEND (return_code=CM_OK)
Estado de conversación: RECEIVE
Send_Data
desasignar
Recepción
(status_received= CM_CONFIRM_DEALLOC_RECEIVED)
Estado de la conversación:
CONFIRM_DEALLOCATE
Confirmado
(return_code=CM_OK) Estado de conversación: RESET
Estado de conversación: RESET

Estados iniciales

Antes de asignar la conversación, el estado es RESET para ambos IP.

En el ejemplo, después de asignar la conversación, el estado inicial es SEND para la invocación de TP y RECEIVE para el TP invocable.

Cambiar al estado RECEIVE

La llamada Prepare_To_Receive permite que un TP cambie la conversación de ENVIAR al estado RECEIVE. Esta llamada:

  • Vacía el búfer de envío de la LU local.

  • Envía un indicador de CM_CONFIRM_SEND al TP del asociado a través del parámetro status_received de una llamada Receive , ya que el nivel de sincronización se establece en CM_CONFIRM. Este indicador indica al partner TP que se espera una respuesta confirmada antes de que el TP del asociado pueda empezar a enviar datos.

Cambiar a estado SEND

La llamada Request_To_Send informa al TP del asociado (para el que la conversación está en estado SEND) de que el TP local (para el que la conversación está en estado RECEIVE) quiere enviar datos. Esta solicitud se comunica al TP del asociado a través del parámetro request_to_send_received de la llamada Confirm . (El parámetro request_to_send_received también se devuelve a Send_Data y a otras llamadas).

Cuando el TP del asociado emite la llamada al Prepare_To_Receive , el estado de la conversación cambia a RECEIVE para el TP del asociado, lo que permite que el TP local envíe datos.

Importante

La emisión de Request_To_Send no cambia el estado de la conversación. Al recibir una solicitud para enviar, el TP del asociado no es necesario para cambiar el estado de la conversación. Puede omitir la solicitud.