@@ -19,7 +19,6 @@ using websocketpp::lib::bind;
19
19
20
20
using websocketpp::lib::thread;
21
21
using websocketpp::lib::mutex;
22
- using websocketpp::lib::lock_guard;
23
22
using websocketpp::lib::unique_lock;
24
23
using websocketpp::lib::condition_variable;
25
24
@@ -72,30 +71,27 @@ class broadcast_server {
72
71
}
73
72
74
73
void on_open (connection_hdl hdl) {
75
- {
76
- lock_guard<mutex> lock (m_action_lock);
77
- // std::cout << "on_open" << std::endl;
78
- m_actions.push (action (SUBSCRIBE,hdl));
79
- } // unlock
74
+ unique_lock<mutex> lock (m_action_lock);
75
+ // std::cout << "on_open" << std::endl;
76
+ m_actions.push (action (SUBSCRIBE,hdl));
77
+ lock.unlock ();
80
78
m_action_cond.notify_one ();
81
79
}
82
80
83
81
void on_close (connection_hdl hdl) {
84
- {
85
- lock_guard<mutex> lock (m_action_lock);
86
- // std::cout << "on_close" << std::endl;
87
- m_actions.push (action (UNSUBSCRIBE,hdl));
88
- } // unlock
82
+ unique_lock<mutex> lock (m_action_lock);
83
+ // std::cout << "on_close" << std::endl;
84
+ m_actions.push (action (UNSUBSCRIBE,hdl));
85
+ lock.unlock ();
89
86
m_action_cond.notify_one ();
90
87
}
91
88
92
89
void on_message (connection_hdl hdl, server::message_ptr msg) {
93
90
// queue message up for sending by processing thread
94
- {
95
- lock_guard<mutex> lock (m_action_lock);
96
- // std::cout << "on_message" << std::endl;
97
- m_actions.push (action (MESSAGE,hdl,msg));
98
- } // unlock
91
+ unique_lock<mutex> lock (m_action_lock);
92
+ // std::cout << "on_message" << std::endl;
93
+ m_actions.push (action (MESSAGE,hdl,msg));
94
+ lock.unlock ();
99
95
m_action_cond.notify_one ();
100
96
}
101
97
@@ -113,13 +109,13 @@ class broadcast_server {
113
109
lock.unlock ();
114
110
115
111
if (a.type == SUBSCRIBE) {
116
- lock_guard <mutex> con_lock (m_connection_lock);
112
+ unique_lock <mutex> con_lock (m_connection_lock);
117
113
m_connections.insert (a.hdl );
118
114
} else if (a.type == UNSUBSCRIBE) {
119
- lock_guard <mutex> con_lock (m_connection_lock);
115
+ unique_lock <mutex> con_lock (m_connection_lock);
120
116
m_connections.erase (a.hdl );
121
117
} else if (a.type == MESSAGE) {
122
- lock_guard <mutex> con_lock (m_connection_lock);
118
+ unique_lock <mutex> con_lock (m_connection_lock);
123
119
124
120
con_list::iterator it;
125
121
for (it = m_connections.begin (); it != m_connections.end (); ++it) {
0 commit comments