This blocks until all watchers of the object have received and
reacted to the notify, or a timeout is reached.
The reply buffer is optional. If specified, the client will get
back an encoded buffer that includes the ids of the clients that
acknowledged the notify as well as their notify ack payloads (if
any). Clients that timed out are not included. Even clients that
do not include a notify ack payload are included in the list but
have a 0-length payload associated with them. The format:
le32 num_acks
{
le64 gid global id for the client (for client.1234 that's 1234)
le64 cookie cookie for the client
le32 buflen length of reply message buffer
u8 * buflen payload
} * num_acks
le32 num_timeouts
{
le64 gid global id for the client
le64 cookie cookie for the client
} * num_timeouts
Note: There may be multiple instances of the same gid if there are
multiple watchers registered via the same client.
Note: The buffer must be released with rados_buffer_free() when the
user is done with it.
Note: Since the result buffer includes clients that time out, it
will be set even when rados_notify() returns an error code (like
-ETIMEDOUT).
@param io the pool the object is in
@param completion what to do when operation has been attempted
@param o the name of the object
@param buf data to send to watchers
@param buf_len length of buf in bytes
@param timeout_ms notify timeout (in ms)
@param reply_buffer pointer to reply buffer pointer (free with rados_buffer_free)
@param reply_buffer_len pointer to size of reply buffer
@returns 0 on success, negative error code on failure
Sychronously notify watchers of an object
This blocks until all watchers of the object have received and reacted to the notify, or a timeout is reached.
The reply buffer is optional. If specified, the client will get back an encoded buffer that includes the ids of the clients that acknowledged the notify as well as their notify ack payloads (if any). Clients that timed out are not included. Even clients that do not include a notify ack payload are included in the list but have a 0-length payload associated with them. The format:
le32 num_acks { le64 gid global id for the client (for client.1234 that's 1234) le64 cookie cookie for the client le32 buflen length of reply message buffer u8 * buflen payload } * num_acks le32 num_timeouts { le64 gid global id for the client le64 cookie cookie for the client } * num_timeouts
Note: There may be multiple instances of the same gid if there are multiple watchers registered via the same client.
Note: The buffer must be released with rados_buffer_free() when the user is done with it.
Note: Since the result buffer includes clients that time out, it will be set even when rados_notify() returns an error code (like -ETIMEDOUT).
@param io the pool the object is in @param completion what to do when operation has been attempted @param o the name of the object @param buf data to send to watchers @param buf_len length of buf in bytes @param timeout_ms notify timeout (in ms) @param reply_buffer pointer to reply buffer pointer (free with rados_buffer_free) @param reply_buffer_len pointer to size of reply buffer @returns 0 on success, negative error code on failure