common/zmqclient.h (30 lines of code) (raw):
#pragma once
#include <memory>
#include <vector>
#include <queue>
#include <thread>
#include <mutex>
#include "zmqserver.h"
namespace swss {
class ZmqClient
{
public:
ZmqClient(const std::string& endpoint);
ZmqClient(const std::string& endpoint, const std::string& vrf);
~ZmqClient();
bool isConnected();
void connect();
void sendMsg(const std::string& dbName,
const std::string& tableName,
const std::vector<KeyOpFieldsValuesTuple>& kcos);
private:
void initialize(const std::string& endpoint, const std::string& vrf);
std::string m_endpoint;
std::string m_vrf;
void* m_context;
void* m_socket;
bool m_connected;
std::mutex m_socketMutex;
std::vector<char> m_sendbuffer;
};
}