From 3e9f5b869dd32441fdd3d77091cb33ef4301f244 Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期二, 06 四月 2021 20:26:20 +0800
Subject: [PATCH] use BHCenter.

---
 src/center.cpp |   36 +++++++++++++++++++++++++++++++++---
 1 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/center.cpp b/src/center.cpp
index d0e61a2..a3897fb 100644
--- a/src/center.cpp
+++ b/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;
 }
\ No newline at end of file

--
Gitblit v1.8.0