Work on pubsub sample

This commit is contained in:
fbraem
2015-11-02 22:09:35 +01:00
parent cbb45f5b25
commit dfc89d09de
2 changed files with 23 additions and 17 deletions

View File

@@ -10,11 +10,12 @@
//
#include <iostream>
#include "Poco/Net/NetException.h"
#include "Poco/Exception.h"
#include "Poco/Delegate.h"
#include "Poco/Thread.h"
#include "RedisTest.h"
#include "Poco/Redis/AsyncReader.h"
#include "CppUnit/TestCaller.h"
#include "CppUnit/TestSuite.h"
@@ -23,7 +24,7 @@ using namespace Poco::Redis;
bool RedisTest::_connected = false;
Poco::Redis::AsyncClient RedisTest::_redis;
Poco::Redis::Client RedisTest::_redis;
RedisTest::RedisTest(const std::string& name):
@@ -35,14 +36,15 @@ RedisTest::RedisTest(const std::string& name):
{
try
{
Poco::Timespan t(30, 0); // 30 seconds
Poco::Timespan t(10, 0); // Connect within 10 seconds
_redis.connect(_host, _port, t);
_redis.setReceiveTimeout(t); // Receive answers within 10 seconds
_connected = true;
std::cout << "Connected to [" << _host << ':' << _port << ']' << std::endl;
}
catch (Poco::Net::ConnectionRefusedException& e)
catch (Poco::Exception& e)
{
std::cout << "Couldn't connect to " << e.message() << ". " << std::endl;
std::cout << "Couldn't connect to [" << _host << ':' << _port << ']' << e.message() << ". " << std::endl;
}
}
}
@@ -728,26 +730,30 @@ public:
void RedisTest::testPubSub()
{
if (!_connected)
{
std::cout << "Not connected, test skipped." << std::endl;
return;
}
RedisSubscriber subscriber;
Array subscribe;
subscribe.add("SUBSCRIBE")
.add("test");
Array subscribeReply = _redis.execute<Array>(subscribe);
_redis.execute<void>(subscribe);
_redis.redisResponse += Poco::delegate(&subscriber, &RedisSubscriber::onMessage);
_redis.start();
AsyncReader reader(_redis);
reader.redisResponse += Poco::delegate(&subscriber, &RedisSubscriber::onMessage);
reader.start();
Poco::Thread::sleep(30000);
Array unsubscribe;
unsubscribe.add("UNSUBSCRIBE");
Array unsubscribeReply = _redis.execute<Array>(unsubscribe);
std::cout << "SUBS: " << unsubscribeReply.toString() << std::endl;
_redis.stop();
_redis.execute<void>(unsubscribe);
}
CppUnit::Test* RedisTest::suite()

View File

@@ -17,7 +17,7 @@
#include "Poco/Redis/Redis.h"
#include "Poco/Redis/AsyncClient.h"
#include "Poco/Redis/Client.h"
#include "CppUnit/TestCase.h"
@@ -57,7 +57,7 @@ private:
std::string _host;
unsigned _port;
static bool _connected;
static Poco::Redis::AsyncClient _redis;
static Poco::Redis::Client _redis;
};