lichao
2021-04-06 3e9f5b869dd32441fdd3d77091cb33ef4301f244
src/center.cpp
@@ -37,8 +37,24 @@
   return shm;
}
BHCenter::BHCenter(Socket::Shm &shm) :
    socket_(shm, &BHUniCenter(), 1000) {}
BHCenter::CenterRecords &BHCenter::Centers()
{
   static CenterRecords rec;
   return rec;
}
bool BHCenter::Install(const std::string &name, MsgHandler handler, const std::string &mqid, const int mq_len)
{
   CenterRecords()[name] = CenterInfo{name, handler, mqid, mq_len};
}
BHCenter::BHCenter(Socket::Shm &shm)
{
   sockets_["center"] = std::make_shared<ShmSocket>(shm, &BHTopicCenterAddress(), 1000);
   sockets_["bus"] = std::make_shared<ShmSocket>(shm, &BHTopicBusAddress(), 1000);
   for (auto &kv : Centers()) {
      sockets_[kv.first] = std::make_shared<ShmSocket>(shm, kv.second.mqid_.data(), kv.second.mq_len_);
   }
}
BHCenter::BHCenter() :
    BHCenter(BHomeShm()) {}
@@ -47,6 +63,20 @@
{
   auto onCenter = MakeReqRepCenter();
   auto onBus = MakeBusCenter();
   sockets_["center"]->Start(onCenter);
   sockets_["bus"]->Start(onBus);
   socket_.Start(Join(onCenter, onBus));
   for (auto &kv : Centers()) {
      sockets_[kv.first]->Start(kv.second.handler_);
   }
   return true;
   // socket_.Start(Join(onCenter, onBus));
}
bool BHCenter::Stop()
{
   for (auto &kv : sockets_) {
      kv.second->Stop();
   }
   return true;
}