A class that represents a wamp message in its simplest form. More...

#include <wamp_message.hpp>

Public Types

using message_fields = std::vector< msgpack::object >
A convenience type for representing message fields.
 

Public Member Functions

 wamp_message (std::size_t num_fields)
Constructs a wamp message with the given number of fields. More...
 
 wamp_message (std::size_t num_fields, msgpack::zone &&zone)
Constructs a wamp message with the given number of fields. More...
 
 wamp_message (message_fields &&fields, msgpack::zone &&zone)
Constructs a wamp message with the given fields. More...
 
 wamp_message (const wamp_message &other)=delete
 
 wamp_message (wamp_message &&other)
 
wamp_messageoperator= (const wamp_message &other)=delete
 
wamp_messageoperator= (wamp_message &&other)
 
const msgpack::object & field (std::size_t index) const
Retrieves the field at the specified index. More...
 
template<typename Type >
Type field (std::size_t index)
Retrieves the field at the specified index. More...
 
template<typename Type >
void set_field (std::size_t index, const Type &type)
Sets the field at the specified index. More...
 
bool is_field_type (std::size_t index, msgpack::type::object_type type) const
Determines if the field at the specified index is of the given type. More...
 
std::size_t size () const
Retrieves the number of fields in the message. More...
 
const message_fieldsfields () const
The message fields. More...
 
message_fields && fields ()
Pilfers the message fields. More...
 
msgpack::zone && zone ()
Pilfers the message zone. More...
 

Detailed Description

A class that represents a wamp message in its simplest form.

[field1, field2, field3, ...]

Although not all arrays are valid wamp messages, this class simply provides the building blocks to construct any type of message.

TODO: Investigate the benefits of creating a hierarchy of wamp message types similar to what has been done for bonefish.

Definition at line 53 of file wamp_message.hpp.

Constructor & Destructor Documentation

autobahn::wamp_message::wamp_message ( std::size_t  num_fields)

Constructs a wamp message with the given number of fields.

Parameters
num_fieldsThe number of fields in the message.
autobahn::wamp_message::wamp_message ( std::size_t  num_fields,
msgpack::zone &&  zone 
)

Constructs a wamp message with the given number of fields.

Parameters
num_fieldsThe number of fields in the message.
zoneThe zone used to allocate fields in the message.
autobahn::wamp_message::wamp_message ( message_fields &&  fields,
msgpack::zone &&  zone 
)

Constructs a wamp message with the given fields.

Parameters
fieldsThe fields in the message.
zoneThe zone used to allocate fields in the message.

Member Function Documentation

const msgpack::object& autobahn::wamp_message::field ( std::size_t  index) const

Retrieves the field at the specified index.

Throws an exception if the index is out of bounds.

Parameters
indexThe index of the target field.
Returns
The retrieved type.
template<typename Type >
Type autobahn::wamp_message::field ( std::size_t  index)

Retrieves the field at the specified index.

Throws an exception if the index is out of bounds or if the field cannot be retrieved as the specified type.

Template Parameters
TypeThe field's type.
Parameters
indexThe index of the target field.
Returns
The retrieved type.
const message_fields& autobahn::wamp_message::fields ( ) const

The message fields.

Returns
The message fields.
message_fields&& autobahn::wamp_message::fields ( )

Pilfers the message fields.

Returns
The message fields.
bool autobahn::wamp_message::is_field_type ( std::size_t  index,
msgpack::type::object_type  type 
) const

Determines if the field at the specified index is of the given type.

Parameters
indexThe index of the target field.
typeThe field type to check against.
template<typename Type >
void autobahn::wamp_message::set_field ( std::size_t  index,
const Type &  type 
)

Sets the field at the specified index.

Throws an exception if the index is out of bounds.

Template Parameters
TypeThe field's type.
Parameters
indexThe index of the target field.
typeThe type to store in the target field.
std::size_t autobahn::wamp_message::size ( ) const

Retrieves the number of fields in the message.

Returns
The number of fields in the message.
msgpack::zone&& autobahn::wamp_message::zone ( )

Pilfers the message zone.

Returns
The message zone.