7 #ifndef __SIO_MESSAGE_H__ 8 #define __SIO_MESSAGE_H__ 14 #include <type_traits> 37 typedef std::shared_ptr<message>
ptr;
56 static std::string s_empty_string;
57 s_empty_string.clear();
58 return s_empty_string;
61 virtual std::shared_ptr<const std::string>
const&
get_binary()
const {
63 static std::shared_ptr<const std::string> s_empty_binary;
64 s_empty_binary =
nullptr;
65 return s_empty_binary;
70 static std::vector<ptr> s_empty_vector;
71 s_empty_vector.clear();
72 return s_empty_vector;
77 static std::vector<ptr> s_empty_vector;
78 s_empty_vector.clear();
79 return s_empty_vector;
82 virtual const std::map<std::string, message::ptr>&
get_map()
const {
84 static std::map<std::string, message::ptr> s_empty_map;
89 virtual std::map<std::string, message::ptr>&
get_map() {
91 static std::map<std::string, message::ptr> s_empty_map;
149 return static_cast<double>(_v);
193 std::shared_ptr<const std::string> _v;
202 std::shared_ptr<const std::string>
const&
get_binary()
const {
208 std::vector<message::ptr> _v;
219 _v.push_back(message);
222 void push(
const std::string& text) {
226 void push(std::string&& text) {
230 void push(std::shared_ptr<std::string>
const& binary) {
235 void push(std::shared_ptr<const std::string>
const& binary) {
241 _v.insert(_v.begin() + pos,
message);
244 void insert(
size_t pos,
const std::string& text) {
248 void insert(
size_t pos, std::string&& text) {
252 void insert(
size_t pos, std::shared_ptr<std::string>
const& binary) {
257 void insert(
size_t pos, std::shared_ptr<const std::string>
const& binary) {
284 std::map<std::string, message::ptr> _v;
296 void insert(
const std::string & key,
const std::string& text) {
300 void insert(
const std::string & key, std::string&& text) {
304 void insert(
const std::string & key, std::shared_ptr<std::string>
const& binary) {
309 void insert(
const std::string & key, std::shared_ptr<const std::string>
const& binary) {
314 bool has(
const std::string & key) {
315 return _v.find(key) != _v.end();
319 static std::shared_ptr<message> not_found;
321 std::map<std::string, message::ptr>::const_iterator it = _v.find(key);
331 bool has(
const std::string & key)
const {
332 return _v.find(key) != _v.end();
335 std::map<std::string, message::ptr>&
get_map() {
339 const std::map<std::string, message::ptr>&
get_map()
const {
353 m_vector(
std::move(rhs.m_vector)) {
358 m_vector = std::move(rhs.m_vector);
362 template <
typename T>
364 typename std::enable_if<std::is_same<std::vector<message::ptr>,
typename std::remove_reference<T>::type>::value>::type* = 0):
365 m_vector(
std::forward<T>(content)) {
369 m_vector(rhs.m_vector) {
375 m_vector.push_back(message);
379 list(
const std::string& text) {
387 list(std::shared_ptr<std::string>
const& binary) {
392 list(std::shared_ptr<const std::string>
const& binary) {
399 m_vector.push_back(message);
402 void push(
const std::string& text) {
406 void push(std::string&& text) {
410 void push(std::shared_ptr<std::string>
const& binary) {
415 void push(std::shared_ptr<const std::string>
const& binary) {
421 m_vector.insert(m_vector.begin() + pos,
message);
424 void insert(
size_t pos,
const std::string& text) {
428 void insert(
size_t pos, std::string&& text) {
432 void insert(
size_t pos, std::shared_ptr<std::string>
const& binary) {
437 void insert(
size_t pos, std::shared_ptr<const std::string>
const& binary) {
443 return m_vector.size();
457 arr->get_vector().insert(arr->get_vector().end(), m_vector.begin(), m_vector.end());
463 arr->get_vector().insert(arr->get_vector().end(), m_vector.begin(), m_vector.end());
468 std::vector<message::ptr> m_vector;
void insert(size_t pos, const std::string &text)
Definition: sio_message.h:244
Definition: sio_message.h:207
static message::ptr create(int64_t v)
Definition: sio_message.h:140
void insert(size_t pos, std::shared_ptr< std::string > const &binary)
Definition: sio_message.h:252
void insert(size_t pos, std::shared_ptr< const std::string > const &binary)
Definition: sio_message.h:257
const message::ptr & at(size_t i) const
Definition: sio_message.h:266
void insert(const std::string &key, const std::string &text)
Definition: sio_message.h:296
Definition: sio_message.h:21
list(T &&content, typename std::enable_if< std::is_same< std::vector< message::ptr >, typename std::remove_reference< T >::type >::value >::type *=0)
Definition: sio_message.h:363
static message::ptr create(std::string &&v)
Definition: sio_message.h:183
void insert(size_t pos, std::shared_ptr< const std::string > const &binary)
Definition: sio_message.h:437
std::shared_ptr< message > ptr
Definition: sio_message.h:37
void insert(size_t pos, std::string &&text)
Definition: sio_message.h:428
Definition: sio_message.h:20
const message::ptr & at(size_t i) const
Definition: sio_message.h:446
static message::ptr create()
Definition: sio_message.h:288
void push(message::ptr const &message)
Definition: sio_message.h:217
Definition: sio_message.h:102
list(message::list &&rhs)
Definition: sio_message.h:352
virtual double get_double() const
Definition: sio_message.h:49
list(std::shared_ptr< std::string > const &binary)
Definition: sio_message.h:387
bool get_bool() const
Definition: sio_message.h:127
message::ptr to_array_message() const
Definition: sio_message.h:461
Definition: sio_client.h:14
virtual int64_t get_int() const
Definition: sio_message.h:44
const message::ptr & at(const std::string &key) const
Definition: sio_message.h:318
list(const std::string &text)
Definition: sio_message.h:379
Definition: sio_message.h:26
flag
Definition: sio_message.h:18
virtual std::string const & get_string() const
Definition: sio_message.h:54
void push(const std::string &text)
Definition: sio_message.h:222
static message::ptr create(bool v)
Definition: sio_message.h:123
void insert(size_t pos, message::ptr const &message)
Definition: sio_message.h:420
Definition: sio_message.h:25
bool_message(bool v)
Definition: sio_message.h:118
virtual bool get_bool() const
Definition: sio_message.h:39
null_message()
Definition: sio_message.h:104
int64_t get_int() const
Definition: sio_message.h:144
bool has(const std::string &key) const
Definition: sio_message.h:331
std::vector< ptr > & get_vector()
Definition: sio_message.h:274
static message::ptr create(std::string const &v)
Definition: sio_message.h:179
std::map< std::string, message::ptr > & get_map()
Definition: sio_message.h:335
void insert(const std::string &key, std::shared_ptr< const std::string > const &binary)
Definition: sio_message.h:309
Definition: sio_message.h:283
virtual const std::vector< ptr > & get_vector() const
Definition: sio_message.h:68
void insert(const std::string &key, std::string &&text)
Definition: sio_message.h:300
static message::ptr create(std::shared_ptr< const std::string > const &v)
Definition: sio_message.h:198
void insert(const std::string &key, message::ptr const &message)
Definition: sio_message.h:292
list()
Definition: sio_message.h:346
void insert(size_t pos, std::shared_ptr< std::string > const &binary)
Definition: sio_message.h:432
void push(message::ptr const &message)
Definition: sio_message.h:397
void push(std::shared_ptr< std::string > const &binary)
Definition: sio_message.h:410
void push(std::shared_ptr< const std::string > const &binary)
Definition: sio_message.h:415
void push(std::string &&text)
Definition: sio_message.h:406
size_t size() const
Definition: sio_message.h:262
virtual std::map< std::string, message::ptr > & get_map()
Definition: sio_message.h:89
const std::map< std::string, message::ptr > & get_map() const
Definition: sio_message.h:339
void insert(size_t pos, std::string &&text)
Definition: sio_message.h:248
std::shared_ptr< const std::string > const & get_binary() const
Definition: sio_message.h:202
int_message(int64_t v)
Definition: sio_message.h:135
list(std::string &&text)
Definition: sio_message.h:383
bool has(const std::string &key)
Definition: sio_message.h:314
static message::ptr create(double v)
Definition: sio_message.h:160
Definition: sio_message.h:344
message::ptr to_array_message(std::string const &event_name) const
Definition: sio_message.h:454
void insert(const std::string &key, std::shared_ptr< std::string > const &binary)
Definition: sio_message.h:304
Definition: sio_message.h:192
size_t size() const
Definition: sio_message.h:442
virtual std::vector< ptr > & get_vector()
Definition: sio_message.h:75
virtual ~message()
Definition: sio_message.h:29
Definition: sio_message.h:19
std::string const & get_string() const
Definition: sio_message.h:187
virtual std::shared_ptr< const std::string > const & get_binary() const
Definition: sio_message.h:61
Definition: sio_message.h:114
static message::ptr create()
Definition: sio_message.h:213
Definition: sio_message.h:22
void insert(size_t pos, const std::string &text)
Definition: sio_message.h:424
void push(const std::string &text)
Definition: sio_message.h:402
void push(std::shared_ptr< std::string > const &binary)
Definition: sio_message.h:230
double get_double() const
Definition: sio_message.h:148
list(message::ptr const &message)
Definition: sio_message.h:373
list(std::nullptr_t)
Definition: sio_message.h:349
Definition: sio_message.h:169
Definition: sio_message.h:153
void push(std::string &&text)
Definition: sio_message.h:226
void push(std::shared_ptr< const std::string > const &binary)
Definition: sio_message.h:235
void insert(size_t pos, message::ptr const &message)
Definition: sio_message.h:240
list(message::list const &rhs)
Definition: sio_message.h:368
Definition: sio_message.h:23
const std::vector< ptr > & get_vector() const
Definition: sio_message.h:278
static message::ptr create()
Definition: sio_message.h:109
Definition: sio_message.h:132
double get_double() const
Definition: sio_message.h:164
virtual const std::map< std::string, message::ptr > & get_map() const
Definition: sio_message.h:82
Definition: sio_message.h:16
list(std::shared_ptr< const std::string > const &binary)
Definition: sio_message.h:392
message(flag f)
Definition: sio_message.h:99
Definition: sio_message.h:24
flag get_flag() const
Definition: sio_message.h:33