Skip to content

Commit 0458f7d

Browse files
gummifsigiesec
authored andcommitted
Problem: Type-safety of poller_t and active_poller_t can be improved (#318)
Problem: Type-safety of poller_t and active_poller_t can be improved
1 parent 6f0fb2a commit 0458f7d

File tree

4 files changed

+194
-126
lines changed

4 files changed

+194
-126
lines changed

tests/active_poller.cpp

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ TEST_CASE("move construct non empty", "[active_poller]")
4747
zmq::socket_t socket{context, zmq::socket_type::router};
4848

4949
zmq::active_poller_t a;
50-
a.add(socket, ZMQ_POLLIN, [](short) {});
50+
a.add(socket, zmq::event_flags::pollin, [](zmq::event_flags) {});
5151
CHECK_FALSE(a.empty());
5252
CHECK(1u == a.size());
5353
zmq::active_poller_t b = std::move(a);
@@ -63,7 +63,7 @@ TEST_CASE("move assign non empty", "[active_poller]")
6363
zmq::socket_t socket{context, zmq::socket_type::router};
6464

6565
zmq::active_poller_t a;
66-
a.add(socket, ZMQ_POLLIN, [](short) {});
66+
a.add(socket, zmq::event_flags::pollin, [](zmq::event_flags) {});
6767
CHECK_FALSE(a.empty());
6868
CHECK(1u == a.size());
6969
zmq::active_poller_t b;
@@ -79,8 +79,8 @@ TEST_CASE("add handler", "[active_poller]")
7979
zmq::context_t context;
8080
zmq::socket_t socket{context, zmq::socket_type::router};
8181
zmq::active_poller_t active_poller;
82-
zmq::active_poller_t::handler_t handler;
83-
CHECK_NOTHROW(active_poller.add(socket, ZMQ_POLLIN, handler));
82+
zmq::active_poller_t::handler_type handler;
83+
CHECK_NOTHROW(active_poller.add(socket, zmq::event_flags::pollin, handler));
8484
}
8585

8686
#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 0)
@@ -90,9 +90,9 @@ TEST_CASE("add handler invalid events type", "[active_poller]")
9090
zmq::context_t context;
9191
zmq::socket_t socket{context, zmq::socket_type::router};
9292
zmq::active_poller_t active_poller;
93-
zmq::active_poller_t::handler_t handler;
93+
zmq::active_poller_t::handler_type handler;
9494
short invalid_events_type = 2 << 10;
95-
CHECK_THROWS_AS(active_poller.add(socket, invalid_events_type, handler), const zmq::error_t&);
95+
CHECK_THROWS_AS(active_poller.add(socket, static_cast<zmq::event_flags>(invalid_events_type), handler), const zmq::error_t&);
9696
CHECK(active_poller.empty());
9797
CHECK(0u == active_poller.size());
9898
}
@@ -103,10 +103,10 @@ TEST_CASE("add handler twice throws", "[active_poller]")
103103
zmq::context_t context;
104104
zmq::socket_t socket{context, zmq::socket_type::router};
105105
zmq::active_poller_t active_poller;
106-
zmq::active_poller_t::handler_t handler;
107-
active_poller.add(socket, ZMQ_POLLIN, handler);
106+
zmq::active_poller_t::handler_type handler;
107+
active_poller.add(socket, zmq::event_flags::pollin, handler);
108108
/// \todo the actual error code should be checked
109-
CHECK_THROWS_AS(active_poller.add(socket, ZMQ_POLLIN, handler), const zmq::error_t&);
109+
CHECK_THROWS_AS(active_poller.add(socket, zmq::event_flags::pollin, handler), const zmq::error_t&);
110110
}
111111

112112
TEST_CASE("wait with no handlers throws", "[active_poller]")
@@ -130,7 +130,7 @@ TEST_CASE("remove registered empty", "[active_poller]")
130130
zmq::context_t context;
131131
zmq::socket_t socket{context, zmq::socket_type::router};
132132
zmq::active_poller_t active_poller;
133-
active_poller.add(socket, ZMQ_POLLIN, zmq::active_poller_t::handler_t{});
133+
active_poller.add(socket, zmq::event_flags::pollin, zmq::active_poller_t::handler_type{});
134134
CHECK_NOTHROW(active_poller.remove(socket));
135135
}
136136

@@ -139,17 +139,17 @@ TEST_CASE("remove registered non empty", "[active_poller]")
139139
zmq::context_t context;
140140
zmq::socket_t socket{context, zmq::socket_type::router};
141141
zmq::active_poller_t active_poller;
142-
active_poller.add(socket, ZMQ_POLLIN, [](short) {});
142+
active_poller.add(socket, zmq::event_flags::pollin, [](zmq::event_flags) {});
143143
CHECK_NOTHROW(active_poller.remove(socket));
144144
}
145145

146146
namespace
147147
{
148148
struct server_client_setup : common_server_client_setup
149149
{
150-
zmq::active_poller_t::handler_t handler = [&](short e) { events = e; };
150+
zmq::active_poller_t::handler_type handler = [&](zmq::event_flags e) { events = e; };
151151

152-
short events = 0;
152+
zmq::event_flags events = zmq::event_flags::none;
153153
};
154154
}
155155

@@ -161,11 +161,11 @@ TEST_CASE("poll basic", "[active_poller]")
161161

162162
zmq::active_poller_t active_poller;
163163
bool message_received = false;
164-
zmq::active_poller_t::handler_t handler = [&message_received](short events) {
165-
CHECK(0 != (events & ZMQ_POLLIN));
164+
zmq::active_poller_t::handler_type handler = [&message_received](zmq::event_flags events) {
165+
CHECK(zmq::event_flags::none != (events & zmq::event_flags::pollin));
166166
message_received = true;
167167
};
168-
CHECK_NOTHROW(active_poller.add(s.server, ZMQ_POLLIN, handler));
168+
CHECK_NOTHROW(active_poller.add(s.server, zmq::event_flags::pollin, handler));
169169
CHECK(1 == active_poller.wait(std::chrono::milliseconds{-1}));
170170
CHECK(message_received);
171171
}
@@ -180,33 +180,33 @@ TEST_CASE("client server", "[active_poller]")
180180

181181
// Setup active_poller
182182
zmq::active_poller_t active_poller;
183-
short events;
184-
zmq::active_poller_t::handler_t handler = [&](short e) {
185-
if (0 != (e & ZMQ_POLLIN)) {
183+
zmq::event_flags events;
184+
zmq::active_poller_t::handler_type handler = [&](zmq::event_flags e) {
185+
if (zmq::event_flags::none != (e & zmq::event_flags::pollin)) {
186186
zmq::message_t zmq_msg;
187187
CHECK_NOTHROW(s.server.recv(zmq_msg)); // get message
188188
std::string recv_msg(zmq_msg.data<char>(), zmq_msg.size());
189189
CHECK(send_msg == recv_msg);
190-
} else if (0 != (e & ~ZMQ_POLLOUT)) {
191-
INFO("Unexpected event type " << events);
190+
} else if (zmq::event_flags::none != (e & ~zmq::event_flags::pollout)) {
191+
INFO("Unexpected event type " << static_cast<short>(events));
192192
REQUIRE(false);
193193
}
194194
events = e;
195195
};
196196

197-
CHECK_NOTHROW(active_poller.add(s.server, ZMQ_POLLIN, handler));
197+
CHECK_NOTHROW(active_poller.add(s.server, zmq::event_flags::pollin, handler));
198198

199199
// client sends message
200200
CHECK_NOTHROW(s.client.send(zmq::message_t{send_msg}, zmq::send_flags::none));
201201

202202
CHECK(1 == active_poller.wait(std::chrono::milliseconds{-1}));
203-
CHECK(events == ZMQ_POLLIN);
203+
CHECK(events == zmq::event_flags::pollin);
204204

205205
// Re-add server socket with pollout flag
206206
CHECK_NOTHROW(active_poller.remove(s.server));
207-
CHECK_NOTHROW(active_poller.add(s.server, ZMQ_POLLIN | ZMQ_POLLOUT, handler));
207+
CHECK_NOTHROW(active_poller.add(s.server, zmq::event_flags::pollin | zmq::event_flags::pollout, handler));
208208
CHECK(1 == active_poller.wait(std::chrono::milliseconds{-1}));
209-
CHECK(events == ZMQ_POLLOUT);
209+
CHECK(events == zmq::event_flags::pollout);
210210
}
211211

212212
TEST_CASE("add invalid socket throws", "[active_poller]")
@@ -215,7 +215,7 @@ TEST_CASE("add invalid socket throws", "[active_poller]")
215215
zmq::active_poller_t active_poller;
216216
zmq::socket_t a{context, zmq::socket_type::router};
217217
zmq::socket_t b{std::move(a)};
218-
CHECK_THROWS_AS(active_poller.add(a, ZMQ_POLLIN, zmq::active_poller_t::handler_t{}),
218+
CHECK_THROWS_AS(active_poller.add(a, zmq::event_flags::pollin, zmq::active_poller_t::handler_type{}),
219219
const zmq::error_t&);
220220
}
221221

@@ -225,7 +225,7 @@ TEST_CASE("remove invalid socket throws", "[active_poller]")
225225
zmq::socket_t socket{context, zmq::socket_type::router};
226226
zmq::active_poller_t active_poller;
227227
CHECK_NOTHROW(
228-
active_poller.add(socket, ZMQ_POLLIN, zmq::active_poller_t::handler_t{}));
228+
active_poller.add(socket, zmq::event_flags::pollin, zmq::active_poller_t::handler_type{}));
229229
CHECK(1u == active_poller.size());
230230
std::vector<zmq::socket_t> sockets;
231231
sockets.emplace_back(std::move(socket));
@@ -238,8 +238,8 @@ TEST_CASE("wait on added empty handler", "[active_poller]")
238238
server_client_setup s;
239239
CHECK_NOTHROW(s.client.send(zmq::message_t{"Hi"}, zmq::send_flags::none));
240240
zmq::active_poller_t active_poller;
241-
zmq::active_poller_t::handler_t handler;
242-
CHECK_NOTHROW(active_poller.add(s.server, ZMQ_POLLIN, handler));
241+
zmq::active_poller_t::handler_type handler;
242+
CHECK_NOTHROW(active_poller.add(s.server, zmq::event_flags::pollin, handler));
243243
CHECK_NOTHROW(active_poller.wait(std::chrono::milliseconds{-1}));
244244
}
245245

@@ -248,7 +248,7 @@ TEST_CASE("modify empty throws", "[active_poller]")
248248
zmq::context_t context;
249249
zmq::socket_t socket{context, zmq::socket_type::push};
250250
zmq::active_poller_t active_poller;
251-
CHECK_THROWS_AS(active_poller.modify(socket, ZMQ_POLLIN), const zmq::error_t&);
251+
CHECK_THROWS_AS(active_poller.modify(socket, zmq::event_flags::pollin), const zmq::error_t&);
252252
}
253253

254254
TEST_CASE("modify invalid socket throws", "[active_poller]")
@@ -257,7 +257,7 @@ TEST_CASE("modify invalid socket throws", "[active_poller]")
257257
zmq::socket_t a{context, zmq::socket_type::push};
258258
zmq::socket_t b{std::move(a)};
259259
zmq::active_poller_t active_poller;
260-
CHECK_THROWS_AS(active_poller.modify(a, ZMQ_POLLIN), const zmq::error_t&);
260+
CHECK_THROWS_AS(active_poller.modify(a, zmq::event_flags::pollin), const zmq::error_t&);
261261
}
262262

263263
TEST_CASE("modify not added throws", "[active_poller]")
@@ -267,8 +267,8 @@ TEST_CASE("modify not added throws", "[active_poller]")
267267
zmq::socket_t b{context, zmq::socket_type::push};
268268
zmq::active_poller_t active_poller;
269269
CHECK_NOTHROW(
270-
active_poller.add(a, ZMQ_POLLIN, zmq::active_poller_t::handler_t{}));
271-
CHECK_THROWS_AS(active_poller.modify(b, ZMQ_POLLIN), const zmq::error_t&);
270+
active_poller.add(a, zmq::event_flags::pollin, zmq::active_poller_t::handler_type{}));
271+
CHECK_THROWS_AS(active_poller.modify(b, zmq::event_flags::pollin), const zmq::error_t&);
272272
}
273273

274274
TEST_CASE("modify simple", "[active_poller]")
@@ -277,8 +277,8 @@ TEST_CASE("modify simple", "[active_poller]")
277277
zmq::socket_t a{context, zmq::socket_type::push};
278278
zmq::active_poller_t active_poller;
279279
CHECK_NOTHROW(
280-
active_poller.add(a, ZMQ_POLLIN, zmq::active_poller_t::handler_t{}));
281-
CHECK_NOTHROW(active_poller.modify(a, ZMQ_POLLIN | ZMQ_POLLOUT));
280+
active_poller.add(a, zmq::event_flags::pollin, zmq::active_poller_t::handler_type{}));
281+
CHECK_NOTHROW(active_poller.modify(a, zmq::event_flags::pollin | zmq::event_flags::pollout));
282282
}
283283

284284
TEST_CASE("poll client server", "[active_poller]")
@@ -288,19 +288,19 @@ TEST_CASE("poll client server", "[active_poller]")
288288

289289
// Setup active_poller
290290
zmq::active_poller_t active_poller;
291-
CHECK_NOTHROW(active_poller.add(s.server, ZMQ_POLLIN, s.handler));
291+
CHECK_NOTHROW(active_poller.add(s.server, zmq::event_flags::pollin, s.handler));
292292

293293
// client sends message
294294
CHECK_NOTHROW(s.client.send(zmq::message_t{"Hi"}, zmq::send_flags::none));
295295

296296
// wait for message and verify events
297297
CHECK_NOTHROW(active_poller.wait(std::chrono::milliseconds{500}));
298-
CHECK(s.events == ZMQ_POLLIN);
298+
CHECK(s.events == zmq::event_flags::pollin);
299299

300300
// Modify server socket with pollout flag
301-
CHECK_NOTHROW(active_poller.modify(s.server, ZMQ_POLLIN | ZMQ_POLLOUT));
301+
CHECK_NOTHROW(active_poller.modify(s.server, zmq::event_flags::pollin | zmq::event_flags::pollout));
302302
CHECK(1 == active_poller.wait(std::chrono::milliseconds{500}));
303-
CHECK(s.events == (ZMQ_POLLIN | ZMQ_POLLOUT));
303+
CHECK(s.events == (zmq::event_flags::pollin | zmq::event_flags::pollout));
304304
}
305305

306306
TEST_CASE("wait one return", "[active_poller]")
@@ -313,7 +313,7 @@ TEST_CASE("wait one return", "[active_poller]")
313313
// Setup active_poller
314314
zmq::active_poller_t active_poller;
315315
CHECK_NOTHROW(
316-
active_poller.add(s.server, ZMQ_POLLIN, [&count](short) { ++count; }));
316+
active_poller.add(s.server, zmq::event_flags::pollin, [&count](zmq::event_flags) { ++count; }));
317317

318318
// client sends message
319319
CHECK_NOTHROW(s.client.send(zmq::message_t{"Hi"}, zmq::send_flags::none));
@@ -328,8 +328,8 @@ TEST_CASE("wait on move constructed active_poller", "[active_poller]")
328328
server_client_setup s;
329329
CHECK_NOTHROW(s.client.send(zmq::message_t{"Hi"}, zmq::send_flags::none));
330330
zmq::active_poller_t a;
331-
zmq::active_poller_t::handler_t handler;
332-
CHECK_NOTHROW(a.add(s.server, ZMQ_POLLIN, handler));
331+
zmq::active_poller_t::handler_type handler;
332+
CHECK_NOTHROW(a.add(s.server, zmq::event_flags::pollin, handler));
333333
zmq::active_poller_t b{std::move(a)};
334334
CHECK(1u == b.size());
335335
/// \todo the actual error code should be checked
@@ -342,8 +342,8 @@ TEST_CASE("wait on move assigned active_poller", "[active_poller]")
342342
server_client_setup s;
343343
CHECK_NOTHROW(s.client.send(zmq::message_t{"Hi"}, zmq::send_flags::none));
344344
zmq::active_poller_t a;
345-
zmq::active_poller_t::handler_t handler;
346-
CHECK_NOTHROW(a.add(s.server, ZMQ_POLLIN, handler));
345+
zmq::active_poller_t::handler_type handler;
346+
CHECK_NOTHROW(a.add(s.server, zmq::event_flags::pollin, handler));
347347
zmq::active_poller_t b;
348348
b = {std::move(a)};
349349
CHECK(1u == b.size());
@@ -359,7 +359,7 @@ TEST_CASE("received on move constructed active_poller", "[active_poller]")
359359
int count = 0;
360360
// Setup active_poller a
361361
zmq::active_poller_t a;
362-
CHECK_NOTHROW(a.add(s.server, ZMQ_POLLIN, [&count](short) { ++count; }));
362+
CHECK_NOTHROW(a.add(s.server, zmq::event_flags::pollin, [&count](zmq::event_flags) { ++count; }));
363363
// client sends message
364364
CHECK_NOTHROW(s.client.send(zmq::message_t{"Hi"}, zmq::send_flags::none));
365365
// wait for message and verify it is received
@@ -389,8 +389,8 @@ TEST_CASE("remove from handler", "[active_poller]")
389389
int count = 0;
390390
for (size_t i = 0; i < ITER_NO; ++i) {
391391
CHECK_NOTHROW(
392-
active_poller.add(setup_list[i].server, ZMQ_POLLIN, [&, i](short events) {
393-
CHECK(events == ZMQ_POLLIN);
392+
active_poller.add(setup_list[i].server, zmq::event_flags::pollin, [&, i](zmq::event_flags events) {
393+
CHECK(events == zmq::event_flags::pollin);
394394
active_poller.remove(setup_list[ITER_NO - i - 1].server);
395395
CHECK((ITER_NO - i - 1) == active_poller.size());
396396
}));

0 commit comments

Comments
 (0)