inline void wamp_unsubscribed_message::unmarshal( const std::vector<msgpack::object>& fields, msgpack::zone&& zone) { if (fields.size() != NUM_FIELDS) { throw std::invalid_argument("invalid number of fields"); } if (fields[0].as<wamp_message_type>() != get_type()) { throw std::invalid_argument("invalid message type"); } acquire_zone(std::move(zone)); m_request_id = fields[1]; }
inline void wamp_publish_message::unmarshal( const std::vector<msgpack::object>& fields, msgpack::zone&& zone) { if (fields.size() < MIN_FIELDS || fields.size() > MAX_FIELDS) { throw std::invalid_argument("invalid number of fields"); } if (fields[0].as<wamp_message_type>() != get_type()) { throw std::invalid_argument("invalid message type"); } acquire_zone(std::move(zone)); m_request_id = fields[1]; m_options = fields[2]; m_topic = fields[3]; if (fields.size() >= 5) { m_arguments = fields[4]; } if (fields.size() == 6) { m_arguments_kw = fields[5]; } }