@@ -30,7 +30,7 @@ namespace sio
30
30
return std::bind (&event_adapter::adapt_func, func,std::placeholders::_1);
31
31
}
32
32
33
- static inline event create_event (std::string const & nsp,std::string const & name,message::ptr const & message,bool need_ack)
33
+ static inline event create_event (std::string const & nsp,std::string const & name,message::list& & message,bool need_ack)
34
34
{
35
35
return event (nsp,name,message,need_ack);
36
36
}
@@ -51,7 +51,19 @@ namespace sio
51
51
inline
52
52
const message::ptr& event::get_message () const
53
53
{
54
- return m_message;
54
+ if (m_messages.size ()>0 )
55
+ return m_messages[0 ];
56
+ else
57
+ {
58
+ static message::ptr null_ptr;
59
+ return null_ptr;
60
+ }
61
+ }
62
+
63
+ inline
64
+ const message::list& event::get_messages () const
65
+ {
66
+ return m_messages;
55
67
}
56
68
57
69
inline
@@ -68,10 +80,19 @@ namespace sio
68
80
}
69
81
70
82
inline
71
- event::event (std::string const & nsp,std::string const & name,message::ptr const & message ,bool need_ack):
83
+ event::event (std::string const & nsp,std::string const & name,message::list&& messages ,bool need_ack):
72
84
m_nsp (nsp),
73
85
m_name (name),
74
- m_message (message),
86
+ m_messages (std::move(messages)),
87
+ m_need_ack (need_ack)
88
+ {
89
+ }
90
+
91
+ inline
92
+ event::event (std::string const & nsp,std::string const & name,message::list const & messages,bool need_ack):
93
+ m_nsp (nsp),
94
+ m_name (name),
95
+ m_messages (messages),
75
96
m_need_ack (need_ack)
76
97
{
77
98
}
@@ -133,7 +154,7 @@ namespace sio
133
154
private:
134
155
135
156
// Message Parsing callbacks.
136
- void on_socketio_event (const std::string& nsp, int msgId,const std::string& name, message::ptr const & message);
157
+ void on_socketio_event (const std::string& nsp, int msgId,const std::string& name, message::list& & message);
137
158
void on_socketio_ack (int msgId, message::ptr const & message);
138
159
void on_socketio_error (message::ptr const & err_message);
139
160
@@ -359,12 +380,12 @@ namespace sio
359
380
if (array_ptr->get_vector ().size () >= 1 &&array_ptr->get_vector ()[0 ]->get_flag () == message::flag_string)
360
381
{
361
382
const string_message* name_ptr = static_cast <const string_message*>(array_ptr->get_vector ()[0 ].get ());
362
- message::ptr value_ptr ;
363
- if ( array_ptr->get_vector ().size ()> 1 )
383
+ message::list mlist ;
384
+ for ( size_t i = 1 ;i< array_ptr->get_vector ().size ();++i )
364
385
{
365
- value_ptr = array_ptr->get_vector ()[1 ] ;
386
+ mlist. push ( array_ptr->get_vector ()[i]) ;
366
387
}
367
- this ->on_socketio_event (p.get_nsp (), p.get_pack_id (),name_ptr->get_string (), value_ptr );
388
+ this ->on_socketio_event (p.get_nsp (), p.get_pack_id (),name_ptr->get_string (), std::move (mlist) );
368
389
}
369
390
}
370
391
@@ -406,10 +427,10 @@ namespace sio
406
427
}
407
428
}
408
429
409
- void socket::impl::on_socketio_event (const std::string& nsp,int msgId,const std::string& name, message::ptr const & message)
430
+ void socket::impl::on_socketio_event (const std::string& nsp,int msgId,const std::string& name, message::list & & message)
410
431
{
411
432
bool needAck = msgId >= 0 ;
412
- event ev = event_adapter::create_event (nsp,name, message,needAck);
433
+ event ev = event_adapter::create_event (nsp,name, std::move ( message) ,needAck);
413
434
event_listener func = this ->get_bind_listener_locked (name);
414
435
if (func)func (ev);
415
436
if (needAck)
0 commit comments