Procesamiento de confirmación (CPI-C)
La secuencia de eventos para el procesamiento de confirmación es la siguiente:
Establezca el nivel de sincronización.
Envíe una solicitud de confirmación.
Recibir datos y solicitud de confirmación.
Responda a la solicitud de confirmación.
Desasigne la conversación.
Mediante el procesamiento de confirmación, un programa de transacciones (TP) envía una solicitud de confirmación con los datos. El TP del asociado confirma la recepción de los datos o indica que se ha producido un error. Cada vez que los dos CSP intercambian una solicitud de confirmación y una respuesta, se sincronizan.
Nota
Aunque el ejemplo de esta sección no muestra esto, cualquier TP puede enviar o recibir datos, independientemente de si el TP es el TP invocado o el TP invocable.
En la tabla siguiente se muestran los pasos implicados en el procesamiento de la confirmación.
Paso | Emitido por el TP de invocación | Emitido por el TP invocable |
---|---|---|
1 | Initialize_Conversation | |
2 | Set_Sync_Level (sync_level=CM_CONFIRM) | |
3 | Asignar | |
4 | Send_Data | |
5 | Confirm | |
6 | Accept_Conversation | |
7 | Receive (data_received= CM_COMPLETE_DATA_RECEIVED) (status_received= CM_CONFIRM_RECEIVED) | |
8 | Confirmado | |
9 | (return_code=CM_OK) | |
10 | Send_Data | |
11 | desasignar | |
12 | Recepción | |
13 | (status_received= CM_CONFIRM_DEALLOC_RECEIVED) | |
14 | Confirmado | |
15 | (return_code=CM_OK) |
Establecimiento del nivel de sincronización
La llamada Set_Sync_Level permite invalidar el nivel de sincronización predeterminado de la conversación. El nivel de sincronización es una de las características de la conversación. Hay dos niveles de sincronización posibles:
CM_CONFIRM, en el que los CSP pueden solicitar confirmación de recepción de datos y responder a dichas solicitudes.
CM_NONE, el valor predeterminado, en el que no se produce el procesamiento de confirmación.
La llamada Initialize_Conversation establece las características predeterminadas de una conversación. Hay varias llamadas que comienzan por Set_. Estas llamadas permiten invalidar las características de conversación predeterminadas.
Envío de una solicitud de confirmación
La emisión de la llamada Confirm tiene dos efectos:
Vacía el búfer de envío de la LU local y envía los datos contenidos en el búfer al TP del asociado.
Envía una solicitud de confirmación que el TP del asociado recibe a través del parámetro status_received de una llamada Receive .
Después de emitir Confirm, el TP local espera la confirmación del TP del asociado.
Recepción de una solicitud de confirmación
El parámetro status_received de la llamada Receive indica cualquier acción futura que requiera el TP local.
En el ejemplo, la primera recepción tiene un status_received de CM_CONFIRM_RECEIVED, lo que indica que se requiere una confirmación antes de que el TP del asociado pueda continuar.
Responder a una solicitud de confirmación
El TP del asociado emite la llamada confirmada para confirmar la recepción de datos. Esto libera el TP local para reanudar el procesamiento.
Desasignar la conversación
Dado que el nivel de sincronización de la conversación se establece en CM_CONFIRM, Deallocate envía una solicitud de confirmación con los datos vaciados del búfer.
Para la segunda llamada De recepción, status_received es CM_CONFIRM_DEALLOC_RECEIVED , lo que indica que el TP del asociado requiere una confirmación, generada por la llamada confirmada , antes de que se pueda desasignar la conversación.