Next: 8.15 fluke_ipc_side_alert: send an
Up: 8 Interprocess Communication
Previous: 8.13 fluke_ipc_side_ack_send: become the
fluke_error_t
fluke_ipc_side_ack_send_over_receive(fluke_ipc_params_t *ipc_params);
This function is a combination of fluke_ipc_side_ack_send
and fluke_ipc_side_over_receive.
The caller, initially the receiver on a reliable IPC connection,
reverses the channel, sends a message and reverses back to become
the receiver again.
- ipc_params
-
A pointer to a structure describing data and references to send,
and the buffers and references to receive the response into.
Only the receive parameter fields are modified by the call.
Returns one of the following codes:
All of these have an implicit FLUKE_ prefix.
- SUCCESS
-
The caller successfully sent the entire message
described in the ipc_params send fields and then
received a message into the initial receive buffers and
references in ipc_params.
The other side is now ready to reverse the connection again.
- 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.
- IPC_OVER_DISCONNECTED
-
The connection was reversed and a message sent,
but the IPC connection was broken unexpectedly for some reason
before the second reversal actually took place.
- IPC_RECV_MORE_DATA
-
During the receive phase,
all of the provided data buffers filled up
before the sender finished transferring its first message.
The caller must make more room for incoming data
and use fluke_ipc_side_receive to receive it.
The ipc_params structure is updated appropriately
to indicate the amount of data received.
- IPC_RECV_MORE_REFS
-
During the receive phase,
all of the provided references were filled
before the sender finished transferring its first message.
The caller must make room for more references
and use fluke_ipc_side_receive to receive them.
The ipc_params structure is updated appropriately
to indicate the number of references received.
- IPC_RECV_DISCONNECTED
-
During the receive phase,
the sender disconnected after sending some data
but before the receive buffers were filled.
The ipc_params structure is updated appropriately
to indicate the amount of data and references received.
This return code often indicates normal connection termination.
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_ack_send,
fluke_ipc_side_over_receive,
fluke_ipc_side_receive
Next: 8.15 fluke_ipc_side_alert: send an
Up: 8 Interprocess Communication
Previous: 8.13 fluke_ipc_side_ack_send: become the
Utah Flux Research Group