Skip to content

Commit f02dc68

Browse files
committed
2 parents 3d0ac44 + 3aee49c commit f02dc68

File tree

8 files changed

+70
-38
lines changed

8 files changed

+70
-38
lines changed

CMakeLists.txt

+23-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
22
PROJECT(sioclient)
33

4+
option(BUILD_SHARED_LIBS "Build the shared library" OFF)
5+
option(Boost_USE_STATIC_LIBS "Use Boost static version" ON)
6+
7+
set(MAJOR 1)
8+
set(MINOR 6)
9+
set(PATCH 0)
10+
411
if(NOT CMAKE_BUILD_TYPE )
512
MESSAGE(STATUS "not define build type, set to release" )
613
set(CMAKE_BUILD_TYPE Release )
@@ -11,7 +18,6 @@ endif()
1118

1219
set(BOOST_VER "1.55.0" CACHE STRING "boost version" )
1320

14-
set(Boost_USE_STATIC_LIBS ON)
1521
set(Boost_USE_MULTITHREADED ON)
1622
set(Boost_USE_STATIC_RUNTIME OFF)
1723
find_package(Boost ${BOOST_VER} REQUIRED COMPONENTS system date_time random)
@@ -21,7 +27,7 @@ aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src/internal ALL_SRC)
2127
file(GLOB ALL_HEADERS ${CMAKE_CURRENT_LIST_DIR}/src/*.h )
2228
set(SIO_INCLUDEDIR ${CMAKE_CURRENT_LIST_DIR})
2329

24-
add_library(sioclient STATIC ${ALL_SRC})
30+
add_library(sioclient ${ALL_SRC})
2531
target_include_directories(sioclient PRIVATE ${Boost_INCLUDE_DIRS}
2632
${CMAKE_CURRENT_LIST_DIR}/src
2733
${CMAKE_CURRENT_LIST_DIR}/lib/websocketpp
@@ -31,11 +37,18 @@ target_include_directories(sioclient PRIVATE ${Boost_INCLUDE_DIRS}
3137
set_property(TARGET sioclient PROPERTY CXX_STANDARD 11)
3238
set_property(TARGET sioclient PROPERTY CXX_STANDARD_REQUIRED ON)
3339
target_link_libraries(sioclient PRIVATE ${Boost_LIBRARIES})
40+
if(BUILD_SHARED_LIBS)
41+
set_target_properties(sioclient
42+
PROPERTIES
43+
SOVERSION ${MAJOR}
44+
VERSION ${MAJOR}.${MINOR}.${PATCH}
45+
)
46+
endif()
3447
list(APPEND TARGET_LIBRARIES sioclient)
3548

3649
find_package(OpenSSL)
3750
if(OPENSSL_FOUND)
38-
add_library(sioclient_tls STATIC ${ALL_SRC})
51+
add_library(sioclient_tls ${ALL_SRC})
3952
target_include_directories(sioclient_tls PRIVATE ${Boost_INCLUDE_DIRS}
4053
${CMAKE_CURRENT_LIST_DIR}/src
4154
${CMAKE_CURRENT_LIST_DIR}/lib/websocketpp
@@ -47,6 +60,13 @@ set_property(TARGET sioclient_tls PROPERTY CXX_STANDARD 11)
4760
set_property(TARGET sioclient_tls PROPERTY CXX_STANDARD_REQUIRED ON)
4861
target_link_libraries(sioclient_tls PRIVATE ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} )
4962
target_compile_definitions(sioclient_tls PRIVATE -DSIO_TLS)
63+
if(BUILD_SHARED_LIBS)
64+
set_target_properties(sioclient_tls
65+
PROPERTIES
66+
SOVERSION ${MAJOR}
67+
VERSION ${MAJOR}.${MINOR}.${PATCH}
68+
)
69+
endif()
5070
list(APPEND TARGET_LIBRARIES sioclient_tls)
5171

5272
endif()

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;

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();

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();

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
{

src/sio_message.h

+13
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,12 @@ namespace sio
307307
m_vector(std::move(rhs.m_vector))
308308
{
309309

310+
}
311+
312+
list & operator= (const message::list && rhs)
313+
{
314+
m_vector = std::move(rhs.m_vector);
315+
return *this;
310316
}
311317

312318
template <typename T>
@@ -385,6 +391,13 @@ namespace sio
385391
return arr;
386392
}
387393

394+
message::ptr to_array_message() const
395+
{
396+
message::ptr arr = array_message::create();
397+
arr->get_vector().insert(arr->get_vector().end(),m_vector.begin(),m_vector.end());
398+
return arr;
399+
}
400+
388401
private:
389402
vector<message::ptr> m_vector;
390403
};

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

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)