Skip to content

Commit 3aee49c

Browse files
committed
Merge pull request socketio#59 from macq-vraman/ack_javascript_compliant
Changed ack from message::ptr to message::list
2 parents 34b949e + 3500e7b commit 3aee49c

File tree

7 files changed

+47
-35
lines changed

7 files changed

+47
-35
lines changed

Diff for: examples/Console/main.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ socket::ptr current_socket;
7171

7272
void bind_events(socket::ptr &socket)
7373
{
74-
current_socket->on("new message", sio::socket::event_listener_aux([&](string const& name, message::ptr const& data, bool isAck,message::ptr &ack_resp)
74+
current_socket->on("new message", sio::socket::event_listener_aux([&](string const& name, message::ptr const& data, bool isAck,message::list &ack_resp)
7575
{
7676
_lock.lock();
7777
string user = data->get_map()["username"]->get_string();
@@ -80,7 +80,7 @@ void bind_events(socket::ptr &socket)
8080
_lock.unlock();
8181
}));
8282

83-
current_socket->on("user joined",sio::socket::event_listener_aux([&](string const& name, message::ptr const& data, bool isAck,message::ptr &ack_resp)
83+
current_socket->on("user joined",sio::socket::event_listener_aux([&](string const& name, message::ptr const& data, bool isAck,message::list &ack_resp)
8484
{
8585
_lock.lock();
8686
string user = data->get_map()["username"]->get_string();
@@ -91,7 +91,7 @@ void bind_events(socket::ptr &socket)
9191
HIGHLIGHT(user<<" joined"<<"\nthere"<<(plural?" are ":"'s ")<< participants<<(plural?" participants":" participant"));
9292
_lock.unlock();
9393
}));
94-
current_socket->on("user left", sio::socket::event_listener_aux([&](string const& name, message::ptr const& data, bool isAck,message::ptr &ack_resp)
94+
current_socket->on("user left", sio::socket::event_listener_aux([&](string const& name, message::ptr const& data, bool isAck,message::list &ack_resp)
9595
{
9696
_lock.lock();
9797
string user = data->get_map()["username"]->get_string();
@@ -126,7 +126,7 @@ MAIN_FUNC
126126

127127
getline(cin, nickname);
128128
}
129-
current_socket->on("login", sio::socket::event_listener_aux([&](string const& name, message::ptr const& data, bool isAck,message::ptr &ack_resp){
129+
current_socket->on("login", sio::socket::event_listener_aux([&](string const& name, message::ptr const& data, bool isAck,message::list &ack_resp){
130130
_lock.lock();
131131
participants = data->get_map()["numUsers"]->get_int();
132132
bool plural = participants !=1;

Diff for: examples/QT/SioChatDemo/mainwindow.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ void MainWindow::RemoveListItem(QListWidgetItem* item)
137137
}
138138

139139

140-
void MainWindow::OnNewMessage(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp)
140+
void MainWindow::OnNewMessage(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp)
141141
{
142142

143143
if(data->get_flag() == message::flag_object)
@@ -152,7 +152,7 @@ void MainWindow::OnNewMessage(std::string const& name,message::ptr const& data,b
152152
}
153153
}
154154

155-
void MainWindow::OnUserJoined(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp)
155+
void MainWindow::OnUserJoined(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp)
156156
{
157157
if(data->get_flag() == message::flag_object)
158158
{
@@ -181,7 +181,7 @@ void MainWindow::OnUserJoined(std::string const& name,message::ptr const& data,b
181181

182182
}
183183

184-
void MainWindow::OnUserLeft(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp)
184+
void MainWindow::OnUserLeft(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp)
185185
{
186186
if(data->get_flag() == message::flag_object)
187187
{
@@ -209,7 +209,7 @@ void MainWindow::OnUserLeft(std::string const& name,message::ptr const& data,boo
209209
}
210210
}
211211

212-
void MainWindow::OnTyping(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp)
212+
void MainWindow::OnTyping(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp)
213213
{
214214
if(m_typingItem == NULL)
215215
{
@@ -223,7 +223,7 @@ void MainWindow::OnTyping(std::string const& name,message::ptr const& data,bool
223223
}
224224
}
225225

226-
void MainWindow::OnStopTyping(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp)
226+
void MainWindow::OnStopTyping(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp)
227227
{
228228
if(m_typingItem != NULL)
229229
{
@@ -232,7 +232,7 @@ void MainWindow::OnStopTyping(std::string const& name,message::ptr const& data,b
232232
}
233233
}
234234

235-
void MainWindow::OnLogin(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp)
235+
void MainWindow::OnLogin(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp)
236236
{
237237
Q_EMIT RequestToggleInputs(true);
238238
int numUser = data->get_map()["numUsers"]->get_int();

Diff for: examples/QT/SioChatDemo/mainwindow.h

+6-6
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ private Q_SLOTS:
4141
void NicknameAccept();
4242
void NicknameCancelled();
4343
private:
44-
void OnNewMessage(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp);
45-
void OnUserJoined(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp);
46-
void OnUserLeft(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp);
47-
void OnTyping(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp);
48-
void OnStopTyping(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp);
49-
void OnLogin(std::string const& name,message::ptr const& data,bool hasAck,message::ptr &ack_resp);
44+
void OnNewMessage(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp);
45+
void OnUserJoined(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp);
46+
void OnUserLeft(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp);
47+
void OnTyping(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp);
48+
void OnStopTyping(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp);
49+
void OnLogin(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp);
5050
void OnConnected(std::string const& nsp);
5151
void OnClosed(client::close_reason const& reason);
5252
void OnFailed();

Diff for: examples/iOS/SioChatDemo/SioChatDemo/CRViewController.mm

+6-6
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ -(void) updateUser:(NSString*)user count:(NSInteger) num joinOrLeft:(BOOL) isJoi
6969

7070
using namespace sio;
7171

72-
void OnNewMessage(CFTypeRef ctrl,string const& name,sio::message::ptr const& data,bool needACK,sio::message::ptr ackResp)
72+
void OnNewMessage(CFTypeRef ctrl,string const& name,sio::message::ptr const& data,bool needACK,sio::message::list ackResp)
7373
{
7474
if(data->get_flag() == message::flag_object)
7575
{
@@ -82,7 +82,7 @@ void OnNewMessage(CFTypeRef ctrl,string const& name,sio::message::ptr const& dat
8282

8383
}
8484

85-
void OnTyping(CFTypeRef ctrl,string const& name,sio::message::ptr const& data,bool needACK,sio::message::ptr ackResp)
85+
void OnTyping(CFTypeRef ctrl,string const& name,sio::message::ptr const& data,bool needACK,sio::message::list ackResp)
8686
{
8787
if(data->get_flag() == message::flag_object)
8888
{
@@ -93,7 +93,7 @@ void OnTyping(CFTypeRef ctrl,string const& name,sio::message::ptr const& data,bo
9393
}
9494
}
9595

96-
void OnStopTyping(CFTypeRef ctrl,string const& name,sio::message::ptr const& data,bool needACK,sio::message::ptr ackResp)
96+
void OnStopTyping(CFTypeRef ctrl,string const& name,sio::message::ptr const& data,bool needACK,sio::message::list ackResp)
9797
{
9898
if(data->get_flag() == message::flag_object)
9999
{
@@ -104,7 +104,7 @@ void OnStopTyping(CFTypeRef ctrl,string const& name,sio::message::ptr const& dat
104104
}
105105
}
106106

107-
void OnUserJoined(CFTypeRef ctrl, string const& name, sio::message::ptr const& data, bool needACK, sio::message::ptr ackResp)
107+
void OnUserJoined(CFTypeRef ctrl, string const& name, sio::message::ptr const& data, bool needACK, sio::message::list ackResp)
108108
{
109109
if(data->get_flag() == message::flag_object)
110110
{
@@ -116,7 +116,7 @@ void OnUserJoined(CFTypeRef ctrl, string const& name, sio::message::ptr const& d
116116
}
117117
}
118118

119-
void OnUserLeft(CFTypeRef ctrl, string const& name, sio::message::ptr const& data, bool needACK, sio::message::ptr ackResp)
119+
void OnUserLeft(CFTypeRef ctrl, string const& name, sio::message::ptr const& data, bool needACK, sio::message::list ackResp)
120120
{
121121
if(data->get_flag() == message::flag_object)
122122
{
@@ -129,7 +129,7 @@ void OnUserLeft(CFTypeRef ctrl, string const& name, sio::message::ptr const& dat
129129
}
130130

131131

132-
void OnLogin(CFTypeRef ctrl, string const& name, sio::message::ptr const& data, bool needACK, sio::message::ptr ackResp)
132+
void OnLogin(CFTypeRef ctrl, string const& name, sio::message::ptr const& data, bool needACK, sio::message::list ackResp)
133133
{
134134
if(data->get_flag() == message::flag_object)
135135
{

Diff for: src/sio_message.h

+13
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,12 @@ namespace sio
291291
m_vector(std::move(rhs.m_vector))
292292
{
293293

294+
}
295+
296+
list & operator= (const message::list && rhs)
297+
{
298+
m_vector = std::move(rhs.m_vector);
299+
return *this;
294300
}
295301

296302
template <typename T>
@@ -369,6 +375,13 @@ namespace sio
369375
return arr;
370376
}
371377

378+
message::ptr to_array_message() const
379+
{
380+
message::ptr arr = array_message::create();
381+
arr->get_vector().insert(arr->get_vector().end(),m_vector.begin(),m_vector.end());
382+
return arr;
383+
}
384+
372385
private:
373386
vector<message::ptr> m_vector;
374387
};

Diff for: src/sio_socket.cpp

+7-8
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ namespace sio
6767
return m_need_ack;
6868
}
6969

70-
void event::put_ack_message(message::ptr const& ack_message)
70+
void event::put_ack_message(message::list const& ack_message)
7171
{
7272
if(m_need_ack)
73-
m_ack_message = ack_message;
73+
m_ack_message = std::move(ack_message);
7474
}
7575

7676
inline
@@ -91,13 +91,13 @@ namespace sio
9191
{
9292
}
9393

94-
message::ptr const& event::get_ack_message() const
94+
message::list const& event::get_ack_message() const
9595
{
9696
return m_ack_message;
9797
}
9898

9999
inline
100-
message::ptr& event::get_ack_message_impl()
100+
message::list& event::get_ack_message_impl()
101101
{
102102
return m_ack_message;
103103
}
@@ -155,7 +155,7 @@ namespace sio
155155

156156
event_listener get_bind_listener_locked(string const& event);
157157

158-
void ack(int msgId,string const& name,message::ptr const& ack_message);
158+
void ack(int msgId,string const& name,message::list const& ack_message);
159159

160160
void timeout_connection(const boost::system::error_code &ec);
161161

@@ -449,10 +449,9 @@ namespace sio
449449
}
450450
}
451451

452-
void socket::impl::ack(int msgId, const string &name, const message::ptr &ack_message)
452+
void socket::impl::ack(int msgId, const string &name, const message::list &ack_message)
453453
{
454-
message::list li(ack_message);
455-
packet p(m_nsp, li.to_array_message(name),msgId,true);
454+
packet p(m_nsp, ack_message.to_array_message(),msgId,true);
456455
send_packet(p);
457456
}
458457

Diff for: src/sio_socket.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,22 @@ namespace sio
1919

2020
bool need_ack() const;
2121

22-
void put_ack_message(message::ptr const& ack_message);
22+
void put_ack_message(message::list const& ack_message);
2323

24-
message::ptr const& get_ack_message() const;
24+
message::list const& get_ack_message() const;
2525

2626
protected:
2727
event(std::string const& nsp,std::string const& name,message::list const& messages,bool need_ack);
2828
event(std::string const& nsp,std::string const& name,message::list&& messages,bool need_ack);
2929

30-
message::ptr& get_ack_message_impl();
30+
message::list& get_ack_message_impl();
3131

3232
private:
3333
const std::string m_nsp;
3434
const std::string m_name;
3535
const message::list m_messages;
3636
const bool m_need_ack;
37-
message::ptr m_ack_message;
37+
message::list m_ack_message;
3838

3939
friend class event_adapter;
4040
};
@@ -46,7 +46,7 @@ namespace sio
4646
class socket
4747
{
4848
public:
49-
typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux;
49+
typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::list& ack_message)> event_listener_aux;
5050

5151
typedef std::function<void(event& event)> event_listener;
5252

0 commit comments

Comments
 (0)