运用
测试文件 testPolicy.cpp
Makefile
http://blog.csdn.net/xumaojun/article/details/51558237 中的redis_publisher.h redis_publisher.cpp redis_subscriber.h redis_subscriber.cpp四个文件,做一个操作类进行测试.
头文件 Policy.h
#pragma once
#include "redis_publisher.h"
#include "redis_subscriber.h"
#include <iostream>
using namespace std;
class Policy
{
public:
Policy();
~Policy();
void publish();
static void recieve_message(const char *channel_name,const char *message, int len);
CRedisPublisher publisher;
CRedisSubscriber subscriber;
};
代码文件 Policy.cpp
#include "Policy.h"
Policy::Policy()
{
bool ret = publisher.init();
if (!ret) {
printf("Init failed.\n");
}
ret = publisher.connect();
if (!ret) {
printf("connect failed.");
}
//***********************************
CRedisSubscriber::NotifyMessageFn fn =
bind(recieve_message, std::tr1::placeholders::_1,
std::tr1::placeholders::_2, std::tr1::placeholders::_3);
bool ret1 = subscriber.init(fn);
if (!ret1) {
printf("Init failed.\n");
}
ret1 = subscriber.connect();
if (!ret1) {
printf("Connect failed.\n");
}
subscriber.subscribe("test-channel");
}
Policy::~Policy()
{
publisher.disconnect();
publisher.uninit();
subscriber.disconnect();
subscriber.uninit();
}
void Policy::publish()
{
cout<<"Policy::publish()...\n"<<endl;
publisher.publish("test-channel", "Test message");
}
void Policy::recieve_message(const char *channel_name,
const char *message, int len)
{
printf("Recieve message: channel name: %s message: %s\n",
channel_name, message);
}
测试文件 testPolicy.cpp
#include "Policy.h"
int main(int argc, char *argv[])
{
Policy m_policy;
int i=0;
while(i<8){
m_policy.publish();
sleep(2);
cout<<"main sleep...\n";
i++;
}
return 0;
}
Makefile
EXE=server_main client_main
CC=g++
FLAG=-lhiredis -levent -pthread
OBJ=redis_publisher.o redis_subscriber.o Policy.o testPolicy.o
all:$(EXE)
$(EXE):$(OBJ)
$(CC) -o testPolicy redis_publisher.o redis_subscriber.o Policy.o t