WSLAY_EVENT_QUEUE_MSG(3)

NAME
wslay_event_queue_msg - Queue a message for future transmission

SYNOPSIS

#include <wslay/wslay.h>

int wslay_event_queue_msg(wslay_event_context_ptr ctx, const struct wslay_event_msg *arg)

int wslay_event_queue_msg_ex(wslay_event_context_ptr ctx, const struct wslay_event_msg *arg, uint8_t rsv)

DESCRIPTION

wslay_event_queue_msg() and wslay_event_queue_msg_ex() queue message specified in arg. The struct wslay_event_msg is defined as:

struct wslay_event_msg {
    uint8_t        opcode;
    const uint8_t *msg;
    size_t         msg_length;
};

The opcode member is opcode of the message. The msg member is the pointer to the message data. The msg_length member is the length of message data.

This function supports both control and non-control messages and the given message is sent without fragmentation. If fragmentation is needed, use wslay_event_queue_fragmented_msg() function instead.

This function makes a copy of msg of length msg_length.

This function just queues a message and does not send it. wslay_event_send() function call sends these queued messages.

wslay_event_queue_msg_ex() additionally accepts rsv parameter, which is a reserved bits to send. To set reserved bits, use macro WSLAY_RSV1_BIT, WSLAY_RSV2_BIT, and WSLAY_RSV3_BIT. See wslay_event_config_set_allowed_rsv_bits() to see the allowed reserved bits to set.

RETURN VALUE

wslay_event_queue_msg() and wslay_event_queue_msg_ex() return 0 if it succeeds, or returns the following negative error codes:

WSLAY_ERR_NO_MORE_MSG
    Could not queue given message. The one of possible reason is that close control frame has been queued/sent and no further queueing message is not allowed.

WSLAY_ERR_INVALID_ARGUMENT
    The given message is invalid; or RSV1 is set for control frame; or bit is set in rsv which is not allowed (see wslay_event_config_set_allowed_rsv_bits()).

WSLAY_ERR_NOMEM
    Out of memory.

SEE ALSO

wslay_event_queue_fragmented_msg(), wslay_event_queue_fragmented_msg_ex(), wslay_event_queue_close()

AUTHOR
Tatsuhiro Tsujikawa

COPYRIGHT
2012, 2015, Tatsuhiro Tsujikawa