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
fluke_error_t
fluke_ipc_side_ack_send(fluke_ipc_params_t *ipc_params);
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.
- 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 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.
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.
fluke_ipc_side_over_receive,
fluke_ipc_side_send,
fluke_ipc_side_receive
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