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

  • Prepare_To_Receive

  • 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:

  • Confirmado

  • Receive

  • Send_Data

  • Send_Error

  • Test_Request_To_Send_Received

    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.