mirror of
https://github.com/pocoproject/poco.git
synced 2025-11-08 06:42:55 +01:00
Use PollSet in SocketReactor #2092 (windows tested)
This commit is contained in:
committed by
Alex Fabijanic
parent
479bde1e46
commit
6912384422
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user