/*
|
* =====================================================================================
|
*
|
* Filename: center.cpp
|
*
|
* Description:
|
*
|
* Version: 1.0
|
* Created: 2021年03月30日 16时19分37秒
|
* Revision: none
|
* Compiler: gcc
|
*
|
* Author: Li Chao (),
|
* Organization:
|
*
|
* =====================================================================================
|
*/
|
#include "center.h"
|
#include "defs.h"
|
#include "pubsub_center.h"
|
#include "reqrep_center.h"
|
#include "shm.h"
|
|
using namespace bhome_shm;
|
typedef BHCenter::MsgHandler Handler;
|
|
Handler Join(Handler h1, Handler h2)
|
{
|
return [h1, h2](ShmSocket &socket, bhome_msg::MsgI &imsg, bhome::msg::BHMsg &msg) {
|
return h1(socket, imsg, msg) || h2(socket, imsg, msg);
|
};
|
}
|
|
SharedMemory &BHomeShm()
|
{
|
static SharedMemory shm("bhome_default_shm_v0", 1024 * 1024 * 64);
|
return shm;
|
}
|
|
BHCenter::BHCenter(Socket::Shm &shm) :
|
socket_(shm, &BHUniCenter(), 1000) {}
|
|
BHCenter::BHCenter() :
|
BHCenter(BHomeShm()) {}
|
|
bool BHCenter::Start()
|
{
|
auto onCenter = MakeReqRepCenter();
|
auto onBus = MakeBusCenter();
|
|
socket_.Start(Join(onCenter, onBus));
|
}
|