add PollSet::has/empty(); ParallelAcceptor: always use same reactor for a socket, if registered

This commit is contained in:
Alex Fabijanic
2018-05-01 13:23:21 -05:00
committed by Alex Fabijanic
parent f6e6bec32d
commit df46368413
8 changed files with 139 additions and 31 deletions

View File

@@ -51,7 +51,11 @@ void PollSetTest::testPoll()
ss2.connect(SocketAddress("127.0.0.1", echoServer2.port()));
PollSet ps;
assertTrue(ps.empty());
ps.add(ss1, PollSet::POLL_READ);
assertTrue(!ps.empty());
assertTrue(ps.has(ss1));
assertTrue(!ps.has(ss2));
// nothing readable
Stopwatch sw;
@@ -62,6 +66,9 @@ void PollSetTest::testPoll()
sw.restart();
ps.add(ss2, PollSet::POLL_READ);
assertTrue(!ps.empty());
assertTrue(ps.has(ss1));
assertTrue(ps.has(ss2));
// ss1 must be writable, if polled for
ps.update(ss1, PollSet::POLL_READ | PollSet::POLL_WRITE);
@@ -100,6 +107,9 @@ void PollSetTest::testPoll()
assertTrue (std::string(buffer, n) == "HELLO");
ps.remove(ss2);
assertTrue(!ps.empty());
assertTrue(ps.has(ss1));
assertTrue(!ps.has(ss2));
ss2.sendBytes("HELLO", 5);
sw.restart();

View File

@@ -124,7 +124,7 @@ namespace
_data += _str.str();
_str.str("");
if ((_once && _data.size() == 1024) ||
(!_once && _data.size() == 4096))
(!_once && _data.size() == 8192))
{
_reactor.stop();
delete this;
@@ -135,7 +135,7 @@ namespace
checkReadableObserverCount(1);
_reactor.removeEventHandler(_socket, Observer<ClientServiceHandler, ReadableNotification>(*this, &ClientServiceHandler::onReadable));
checkReadableObserverCount(0);
if (_once || _data.size() == 4096) _reactor.stop();
if (_once || _data.size() == 8192) _reactor.stop();
delete this;
}
}
@@ -433,11 +433,16 @@ void SocketReactorTest::testParallelSocketReactor()
SocketConnector<ClientServiceHandler> connector2(sa, reactor);
SocketConnector<ClientServiceHandler> connector3(sa, reactor);
SocketConnector<ClientServiceHandler> connector4(sa, reactor);
SocketConnector<ClientServiceHandler> connector5(sa, reactor);
SocketConnector<ClientServiceHandler> connector6(sa, reactor);
SocketConnector<ClientServiceHandler> connector7(sa, reactor);
SocketConnector<ClientServiceHandler> connector8(sa, reactor);
ClientServiceHandler::setOnce(false);
ClientServiceHandler::resetData();
reactor.run();
//acceptor.run();
std::string data(ClientServiceHandler::data());
assertTrue (data.size() == 4096);
assertTrue (data.size() == 8192);
assertTrue (!ClientServiceHandler::readableError());
assertTrue (!ClientServiceHandler::writableError());
assertTrue (!ClientServiceHandler::timeoutError());