next up previous contents
Next: 8.10 fluke_ipc_server_ack_send_wait_receive: reply to Up: 8 Interprocess Communication Previous: 8.8 fluke_ipc_reply_wait_receive: reply to

8.9 fluke_ipc_send: send a one-way message to a port

SYNOPSIS

fluke_error_t fluke_ipc_send(fluke_ref_t *destination, fluke_ipc_params_t *ipc_params);

DESCRIPTION

This function sends a one-way message to the port referred to by the destination port reference. The message transmission will have at-most-once semantics: it may or may not arrive at its destination, but if it does arrive, it will be seen by the server only once, and its contents will be uncorrupted by network bit errors and such. (Whether a message is subject to being modified maliciously depends on the security policies of the Fluke implementation and the surrounding environment.) There are no guarantees about message ordering. In some Fluke implementations it is possible for messages to arrive at the server in a different order from which they were sent. There may be architecture-specific restrictions on buffer alignment, and padding may be added to request and reply messages in transit.

If an error occurs during message transmission, it may or may not be detected by the Fluke implementation. If an error is detected, an appropriate error code may be returned. Otherwise, this function returns FLUKE_SUCCESS, and the message may or may not reach its destination. Thus, the application should only use the return code as a hint, and must still be prepared to tolerate arbitrary message loss.

PARAMETERS

destination
A pointer to a port reference indicating the port to send the message to.
ipc_params
A pointer to a structure describing data and references to send.

RETURNS

Returns one of the following codes: All of these have an implicit FLUKE_ prefix.
SUCCESS
The transfer may have succeeded.
INVALID_DEST
The IPC target referenced by destination is invalid, e.g. because the port it refers to was destroyed or the server task was terminated.

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.
NO_OBJECT
No active object was found at destination. A pointer in the ipc_params send reference array does not refer to an active object.
NOT_REF
The object at destination is not a reference object. An object in the ipc_params send reference array is not a reference object.
NOT_PORT_REF
The object at destination is a reference object, but not a reference to a port.
INVALID_OBJECT
The state of the object at destination is invalid or the state of an object in the ipc_params send 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_wait_receive


next up previous contents
Next: 8.10 fluke_ipc_server_ack_send_wait_receive: reply to Up: 8 Interprocess Communication Previous: 8.8 fluke_ipc_reply_wait_receive: reply to

Utah Flux Research Group