Compartir a través de


Cambio de los estados de conversación

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

  • Verbo emitido por el TP local.

  • Verbo emitido por el TP del asociado.

  • Una condición de error.

    En el ejemplo siguiente se muestra cómo los verbos APPC 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 los verbos appC pueden cambiar el estado de la conversación. En esta tabla, cada estado de conversación aparece en negrita y precede a los verbos appC que se usan mientras están en ese estado.

Emitido por el TP de invocación Emitido por el TP invocable
TP_STARTED
Estado de conversación: RESET
MC_ALLOCATE
(synclevel=AP_CONFIRM_SYNC_LEVL)
Estado de conversación: SEND
MC_SEND_DATA
MC_PREPARE_TO_RECEIVE
(ptr_type=AP_SYNC_LEVEL)
Estado de conversación: RESET
RECEIVE_ALLOCATE
Estado de conversación: RECEIVE
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_DATA_COMPLETE)
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_SEND)
Estado de la conversación: CONFIRM_SEND
MC_CONFIRMED
Estado de conversación: SEND
MC_SEND_DATA
MC_CONFIRM
Estado de conversación: RECEIVE
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_DATA_COMPLETE)
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_WHAT_RECEIVED)
Estado de la conversación: CONFIRM
MC_REQUEST_TO_SEND
MC_CONFIRMED
(rts_rcvd=AP_YES)
MC_PREPARE_TO_RECEIVE
(ptr_type=AP_SYNC_LEVEL)
Estado de conversación: RECEIVE
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_SEND)
Estado de la conversación: CONFIRM_SEND
MC_CONFIRMED
Estado de conversación: SEND
MC_SEND_DATA
MC_DEALLOCATE
(dealloc_type=AP_SYNC_LEVEL)
Estado de conversación: RECEIVE
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_DATA_COMPLETE)
MC_RECEIVE_AND_WAIT
(primary_rc=AP_OK)
(what_rcvd=AP_CONFIRM_DEALLOCATE)
Estado de la conversación: CONFIRM_DEALLOCATE
MC_CONFIRMED
Estado de conversación: RESET Estado de conversación: RESET
TP_ENDED TP_ENDED

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

MC_PREPARE_TO_RECEIVE permite que un TP cambie la conversación del estado SEND a RECEIVE. Este verbo:

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

  • Envía el indicador de AP_CONFIRM_SEND al TP del asociado a través del parámetro what_rcvd de un verbo receive. Este indicador indica al tp del asociado que se espera una respuesta MC_CONFIRMED antes de que el TP del asociado pueda empezar a enviar datos.

    El procesamiento de confirmación se realiza cuando se cumplen las condiciones siguientes:

  • El parámetro ptr_type se establece en AP_SYNC_LEVEL.

  • El nivel de sincronización de la conversación se establece en AP_CONFIRM_SYNC_LEVEL.

    Para obtener más información sobre el procesamiento de confirmación, vea Procesamiento de confirmación.

Nota

Emitir MC_RECEIVE_AND_WAIT mientras la conversación está en estado SEND vacía el búfer de envío de la LU y cambia el estado de conversación a RECEIVE. Cambiar el estado de la conversación de esta manera no admite el procesamiento de confirmación.

Cambiar a estado SEND

MC_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 rts_rcvd de MC_CONFIRM. (El parámetro rts_rcvd también se devuelve a MC_SEND_DATA y a otros verbos).

Cuando el TP del asociado emite MC_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.

Nota

La emisión de MC_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 pasar por alto la solicitud.