/*
|
* =====================================================================================
|
*
|
* Filename: center.h
|
*
|
* Description:
|
*
|
* Version: 1.0
|
* Created: 2021年03月30日 16时22分24秒
|
* Revision: none
|
* Compiler: gcc
|
*
|
* Author: Li Chao (),
|
* Organization:
|
*
|
* =====================================================================================
|
*/
|
#ifndef CENTER_TM9OUQTG
|
#define CENTER_TM9OUQTG
|
|
#include "shm_socket.h"
|
#include <functional>
|
#include <map>
|
#include <memory>
|
class CenterTopicNode;
|
class TcpServer;
|
class TcpProxy;
|
class IoService;
|
|
class BHCenter
|
{
|
typedef ShmSocket Socket;
|
|
public:
|
typedef Socket::PartialRecvCB MsgHandler;
|
typedef Socket::RawRecvCB RawHandler;
|
typedef Socket::IdleCB IdleHandler;
|
static bool Install(const std::string &name, MsgHandler handler, RawHandler raw_handler, IdleHandler idle, const MQInfo &mq, const int mq_len);
|
|
BHCenter(Socket::Shm &shm);
|
~BHCenter();
|
bool Start();
|
bool Stop();
|
|
private:
|
struct CenterInfo {
|
std::string name_;
|
MsgHandler handler_;
|
RawHandler raw_handler_;
|
IdleHandler idle_;
|
MQInfo mq_;
|
int mq_len_ = 0;
|
};
|
typedef std::map<std::string, CenterInfo> CenterRecords;
|
static CenterRecords &Centers();
|
|
std::map<std::string, std::shared_ptr<ShmSocket>> sockets_;
|
std::unique_ptr<CenterTopicNode> topic_node_;
|
|
std::unique_ptr<IoService> io_service_;
|
std::unique_ptr<TcpServer> tcp_server_;
|
std::unique_ptr<TcpProxy> tcp_proxy_;
|
};
|
|
#endif // end of include guard: CENTER_TM9OUQTG
|