Changed ack from message::ptr to message::list

This commit is contained in:
Vincent Raman 2015-09-04 19:53:29 +02:00
parent bbbc1e32dd
commit 646bbe0461
3 changed files with 25 additions and 13 deletions

View File

@ -291,6 +291,12 @@ namespace sio
m_vector(std::move(rhs.m_vector)) m_vector(std::move(rhs.m_vector))
{ {
}
list & operator= (const message::list && rhs)
{
m_vector = std::move(rhs.m_vector);
return *this;
} }
template <typename T> template <typename T>
@ -369,6 +375,13 @@ namespace sio
return arr; return arr;
} }
message::ptr to_array_message() const
{
message::ptr arr = array_message::create();
arr->get_vector().insert(arr->get_vector().end(),m_vector.begin(),m_vector.end());
return arr;
}
private: private:
vector<message::ptr> m_vector; vector<message::ptr> m_vector;
}; };

View File

@ -67,10 +67,10 @@ namespace sio
return m_need_ack; return m_need_ack;
} }
void event::put_ack_message(message::ptr const& ack_message) void event::put_ack_message(message::list const& ack_message)
{ {
if(m_need_ack) if(m_need_ack)
m_ack_message = ack_message; m_ack_message = std::move(ack_message);
} }
inline inline
@ -91,13 +91,13 @@ namespace sio
{ {
} }
message::ptr const& event::get_ack_message() const message::list const& event::get_ack_message() const
{ {
return m_ack_message; return m_ack_message;
} }
inline inline
message::ptr& event::get_ack_message_impl() message::list& event::get_ack_message_impl()
{ {
return m_ack_message; return m_ack_message;
} }
@ -155,7 +155,7 @@ namespace sio
event_listener get_bind_listener_locked(string const& event); event_listener get_bind_listener_locked(string const& event);
void ack(int msgId,string const& name,message::ptr const& ack_message); void ack(int msgId,string const& name,message::list const& ack_message);
void timeout_connection(const boost::system::error_code &ec); void timeout_connection(const boost::system::error_code &ec);
@ -449,10 +449,9 @@ namespace sio
} }
} }
void socket::impl::ack(int msgId, const string &name, const message::ptr &ack_message) void socket::impl::ack(int msgId, const string &name, const message::list &ack_message)
{ {
message::list li(ack_message); packet p(m_nsp, ack_message.to_array_message(),msgId,true);
packet p(m_nsp, li.to_array_message(name),msgId,true);
send_packet(p); send_packet(p);
} }

View File

@ -19,22 +19,22 @@ namespace sio
bool need_ack() const; bool need_ack() const;
void put_ack_message(message::ptr const& ack_message); void put_ack_message(message::list const& ack_message);
message::ptr const& get_ack_message() const; message::list const& get_ack_message() const;
protected: protected:
event(std::string const& nsp,std::string const& name,message::list const& messages,bool need_ack); event(std::string const& nsp,std::string const& name,message::list const& messages,bool need_ack);
event(std::string const& nsp,std::string const& name,message::list&& messages,bool need_ack); event(std::string const& nsp,std::string const& name,message::list&& messages,bool need_ack);
message::ptr& get_ack_message_impl(); message::list& get_ack_message_impl();
private: private:
const std::string m_nsp; const std::string m_nsp;
const std::string m_name; const std::string m_name;
const message::list m_messages; const message::list m_messages;
const bool m_need_ack; const bool m_need_ack;
message::ptr m_ack_message; message::list m_ack_message;
friend class event_adapter; friend class event_adapter;
}; };
@ -46,7 +46,7 @@ namespace sio
class socket class socket
{ {
public: public:
typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux; typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::list& ack_message)> event_listener_aux;
typedef std::function<void(event& event)> event_listener; typedef std::function<void(event& event)> event_listener;