Request_To_Send (CPI-C)
La llamada Request_To_Send ( cmrts nombre de función) notifica al programa asociado que el programa local quiere enviar datos.
Sintaxis
CM_ENTRY Request_To_Send(
unsigned char FAR *conversation_ID,
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.
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_OPERATION_NOT_ACCEPTED
Código de retorno principal; Una operación anterior en esta conversación está incompleta.
CM_OPERATION_INCOMPLETE
Código de retorno principal; la operación no se ha completado (el modo de procesamiento es solo de bloqueo) y todavía está en curso. El programa puede emitir Wait_For_Conversation para esperar la finalización de la operación, o Cancel_Conversation para cancelar la operación y la conversación. Si se ha llamado a Specify_Windows_Handle , la aplicación debe esperar la notificación por un mensaje de Microsoft® Windows® y no llamar a Wait_For_Conversation.
CM_PROGRAM_PARAMETER_CHECK
Código de retorno principal; el valor especificado por conversation_ID no es válido.
CM_PROGRAM_STATE_CHECK
Código de retorno principal; la conversación no está en estado RECEIVE, SEND, SEND_PENDING, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE.
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 cualquiera de los siguientes estados: RECEIVE, SEND, SEND_PENDING, CONFIRM, CONFIRM_SEND o CONFIRM_DEALLOCATE.
No hay ningún cambio de estado.
En respuesta a esta solicitud, el programa asociado puede cambiar la conversación al estado RECEIVE mediante la emisión de una de las siguientes llamadas:
Recibir con el tipo de recepción establecido en CM_RECEIVE_AND_WAIT
Send_Data con el tipo de envío establecido en CM_SEND_AND_PREP_TO_RECEIVE
El programa asociado también puede omitir la solicitud que se va a enviar.
El estado de conversación cambia a SEND para el programa local cuando el programa local recibe uno de los siguientes valores a través del parámetro status_received de una llamada Receive posterior:
CM_SEND_RECEIVED
CM_CONFIRM_SEND_RECEIVED y el programa local responde con una llamada confirmada
Comentarios
El programa asociado recibe la notificación de solicitud a envío a través del parámetro request_to_send_received de las siguientes llamadas:
-
La notificación de solicitud a envío se envía inmediatamente al programa asociado. CPI-C no espera hasta que el búfer de envío se llena o se vacía. Por lo tanto, la notificación de solicitud a envío puede llegar fuera de la secuencia. Por ejemplo, si el programa local está en estado SEND y emite la llamada Prepare_To_Receive seguida de la llamada Request_To_Send , el programa asociado, en estado RECEIVE, puede recibir la notificación de solicitud a envío antes de recibir la notificación de envío. Por este motivo, request_to_send se puede notificar a un programa a través de la llamada Receive .
Tras recibir una notificación de solicitud a envío, la unidad lógica (LU) del asociado conserva la notificación hasta que el asociado emite una llamada que devuelve request_to_send_received. La LU mantiene solo una notificación de solicitud a enviar por conversación. Por lo tanto, el programa local puede emitir más llamadas Request_To_Send de las que el programa de transacciones de asociado (TP) controla explícitamente.