@@ -30,7 +30,7 @@ namespace sio
3030 return std::bind (&event_adapter::adapt_func, func,std::placeholders::_1);
3131 }
3232
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)
3434 {
3535 return event (nsp,name,message,need_ack);
3636 }
@@ -51,7 +51,19 @@ namespace sio
5151 inline
5252 const message::ptr& event::get_message () const
5353 {
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;
5567 }
5668
5769 inline
@@ -68,10 +80,19 @@ namespace sio
6880 }
6981
7082 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):
7284 m_nsp (nsp),
7385 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),
7596 m_need_ack (need_ack)
7697 {
7798 }
@@ -133,7 +154,7 @@ namespace sio
133154 private:
134155
135156 // 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);
137158 void on_socketio_ack (int msgId, message::ptr const & message);
138159 void on_socketio_error (message::ptr const & err_message);
139160
@@ -359,12 +380,12 @@ namespace sio
359380 if (array_ptr->get_vector ().size () >= 1 &&array_ptr->get_vector ()[0 ]->get_flag () == message::flag_string)
360381 {
361382 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 )
364385 {
365- value_ptr = array_ptr->get_vector ()[1 ] ;
386+ mlist. push ( array_ptr->get_vector ()[i]) ;
366387 }
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) );
368389 }
369390 }
370391
@@ -406,10 +427,10 @@ namespace sio
406427 }
407428 }
408429
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)
410431 {
411432 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);
413434 event_listener func = this ->get_bind_listener_locked (name);
414435 if (func)func (ev);
415436 if (needAck)
0 commit comments