Use PollSet in SocketReactor #2092 (windows tested)

This commit is contained in:
Alex Fabijanic
2018-04-26 17:42:11 -05:00
committed by Alex Fabijanic
parent 479bde1e46
commit 6912384422
4 changed files with 69 additions and 65 deletions

View File

@@ -56,7 +56,7 @@ namespace
{
_reactor.removeEventHandler(_socket, Observer<EchoServiceHandler, ReadableNotification>(*this, &EchoServiceHandler::onReadable));
}
void onReadable(ReadableNotification* pNf)
{
pNf->release();
@@ -72,12 +72,12 @@ namespace
delete this;
}
}
private:
StreamSocket _socket;
SocketReactor& _reactor;
};
class ClientServiceHandler
{
public:
@@ -116,15 +116,13 @@ namespace
if (n > 0)
{
_str.write(buffer, n);
}
else
{
checkReadableObserverCount(1);
_reactor.removeEventHandler(_socket, Observer<ClientServiceHandler, ReadableNotification>(*this, &ClientServiceHandler::onReadable));
checkReadableObserverCount(0);
if (_once || _data.size() >= 3072) _reactor.stop();
_data += _str.str();
delete this;
if ((_once && _data.size() >= 1024) ||
(!_once && _data.size() >= 4096))
{
_reactor.stop();
delete this;
}
}
}
@@ -318,7 +316,7 @@ void SocketReactorTest::testSocketReactor()
ClientServiceHandler::resetData();
reactor.run();
std::string data(ClientServiceHandler::data());
assertTrue (data.size() == 1024);
assertTrue (data.size() >= 1024);
assertTrue (!ClientServiceHandler::readableError());
assertTrue (!ClientServiceHandler::writableError());
assertTrue (!ClientServiceHandler::timeoutError());
@@ -338,7 +336,7 @@ void SocketReactorTest::testSetSocketReactor()
ClientServiceHandler::resetData();
reactor.run();
std::string data(ClientServiceHandler::data());
assertTrue (data.size() == 1024);
assertTrue (data.size() >= 1024);
assertTrue (!ClientServiceHandler::readableError());
assertTrue (!ClientServiceHandler::writableError());
assertTrue (!ClientServiceHandler::timeoutError());
@@ -360,7 +358,7 @@ void SocketReactorTest::testParallelSocketReactor()
ClientServiceHandler::resetData();
reactor.run();
std::string data(ClientServiceHandler::data());
assertTrue (data.size() == 4096);
assertTrue (data.size() >= 4096);
assertTrue (!ClientServiceHandler::readableError());
assertTrue (!ClientServiceHandler::writableError());
assertTrue (!ClientServiceHandler::timeoutError());
@@ -411,6 +409,7 @@ CppUnit::Test* SocketReactorTest::suite()
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("SocketReactorTest");
CppUnit_addTest(pSuite, SocketReactorTest, testSocketReactor);
CppUnit_addTest(pSuite, SocketReactorTest, testSetSocketReactor);
CppUnit_addTest(pSuite, SocketReactorTest, testParallelSocketReactor);
CppUnit_addTest(pSuite, SocketReactorTest, testSocketConnectorFail);
CppUnit_addTest(pSuite, SocketReactorTest, testSocketConnectorTimeout);