45 lines
900 B
C++
45 lines
900 B
C++
#pragma once
|
|
#include "IVrZeroMQPubSub.h"
|
|
#include "zmq.hpp"
|
|
|
|
#ifdef _DEBUG
|
|
#pragma comment(lib, "libzmq-v142-mt-gd-4_3_5.lib")
|
|
#else
|
|
#pragma comment(lib, "libzmq-v142-mt-4_3_5.lib")
|
|
#endif
|
|
|
|
// 发布者实现
|
|
class CVrZeroMQPublisher : public IVrZeroMQPublisher
|
|
{
|
|
public:
|
|
CVrZeroMQPublisher();
|
|
~CVrZeroMQPublisher();
|
|
|
|
int Init(int nPort) override;
|
|
int Publish(const char* pTopic, const char* pData, const size_t nLen) override;
|
|
int UnInit() override;
|
|
|
|
private:
|
|
zmq::context_t* m_pContext;
|
|
zmq::socket_t* m_pSocket;
|
|
};
|
|
|
|
// 订阅者实现
|
|
class CVrZeroMQSubscriber : public IVrZeroMQSubscriber
|
|
{
|
|
public:
|
|
CVrZeroMQSubscriber();
|
|
~CVrZeroMQSubscriber();
|
|
|
|
int Init(const char* sIP, int nPort, const char* pTopic, FunSubRecv funRecv) override;
|
|
int UnInit() override;
|
|
|
|
private:
|
|
void _RecvData();
|
|
|
|
zmq::context_t* m_pContext;
|
|
zmq::socket_t* m_pSocket;
|
|
bool m_bRecv;
|
|
FunSubRecv m_funRecv;
|
|
};
|