Go to the first, previous, next, last section, table of contents.


Semantics

  1. The length field in FM_begin_message() is currently defined as an upper bound on the message length. That is, it is safe to send fewer than length bytes, but it is erroneous to send more than length bytes.
  2. Data may be transmitted before the call to FM_end_message().
  3. FM_extract() may be called at any time during a message send, either by the programmer or, if necessary, by one of the above functions.
  4. Data passed to FM_send_piece() may not be modified before the call to FM_end_message(). Data can, however, be safely modified immediately after the call to FM_end_message(). Be careful: Because FM_extract() may be called during a send, programmers must ensure that their handlers do not modify data that's in the process of being sent.
  5. There are no alignment restrictions on the buffer passed to FM_send_piece().(16)
  6. Within a handler, it is incorrect to spin on an FM_begin_message() that returns NULL, waiting for it to become non-NULL. Outside of handlers, this operation is valid.
  7. Sending is thread-safe. That is, if multiple threads try, in parallel, to execute FM_begin_message(), at most one call succeed (i.e. will return a non-NULL value).
  8. Message delivery is ordered and reliable.


Go to the first, previous, next, last section, table of contents.