next up previous contents
Next: 8.14 fluke_ipc_side_ack_send_over_receive: reverse a Up: 8 Interprocess Communication Previous: 8.12 fluke_ipc_setup_wait_receive: set up

8.13 fluke_ipc_side_ack_send: become the sender on a reliable IPC connection

SYNOPSIS

fluke_error_t fluke_ipc_side_ack_send(fluke_ipc_params_t *ipc_params);

DESCRIPTION

This function completes the reversal of a reliable IPC connection. It allows the caller (the current receiver on a reliable IPC connection) to switch roles and become the sender after the current sender initiates the reversal with an over_receive operation. If the current sender is still trying to send data, that data will quietly be discarded and the caller will block until the sender does an over_receive operation. If the sender was already waiting in an over_receive, the reversal takes place immediately.

PARAMETERS

ipc_params
A pointer to a structure describing data buffers and reference objects to send. Only the send parameter fields in this structure are used; the receive parameter fields are ignored. All fields remain unmodified by the call.

RETURNS

Returns one of the following codes: All of these have an implicit FLUKE_ prefix.
SUCCESS
The connection reversal has succeeded and the entire message described in the ipc_params structure has been sent.
IPC_ACK_DISCONNECTED
The IPC connection does not exist, or was broken unexpectedly for some reason before the connection reversal actually took place, e.g. because the other side disconnected or was terminated.
IPC_SEND_DISCONNECTED
The connection was reversed successfully, but the receiver disconnected afterwards before the message was completely sent.

ERRORS

If any of the following errors is detected by the Fluke implementation, it causes the current thread to take a synchronous exception with one of the following codes. All of these have an implicit FLUKE_INSANITY_ prefix.
NOT_RECEIVER
The current thread is not the receiver on the specified IPC connection.
NO_OBJECT
A pointer in the ipc_params receive reference array does not refer to an active object.
NOT_REF
An object in the ipc_params receive reference array is not a reference object.
INVALID_OBJECT
The state of an object in the ipc_params receive reference array is invalid.
BUFFER_TOO_SMALL
The initial send data was smaller than FLUKE_MIN_MSG_SIZE.
BUFFER_UNALIGNED
A message buffer was not aligned properly according to the architecture-specific requirements.

RELATED INFORMATION

fluke_ipc_side_over_receive, fluke_ipc_side_send, fluke_ipc_side_receive


next up previous contents
Next: 8.14 fluke_ipc_side_ack_send_over_receive: reverse a Up: 8 Interprocess Communication Previous: 8.12 fluke_ipc_setup_wait_receive: set up

Utah Flux Research Group