| | |
| | | // which node might crash inside and cause deadlock. |
| | | bool CenterInit(bhome_shm::SharedMemory &shm) |
| | | { |
| | | Mutex *mutex = shm.Create<Mutex>("shm_center_lock"); |
| | | Mutex *mutex = shm.FindOrCreate<Mutex>("shm_center_lock"); |
| | | if (!mutex || !mutex->try_lock()) { |
| | | return false; |
| | | } |
| | |
| | | InitMQ(info.mq_sender_, NextId()); |
| | | InitMQ(info.mq_center_, NextId()); |
| | | InitMQ(info.mq_bus_, NextId()); |
| | | InitMQ(info.mq_init_, NextId()); |
| | | |
| | | pmeta->tag_ = kCenterInfoTag; |
| | | return true; |
| | |
| | | const MQInfo &BHGlobalSenderAddress() { return GetCenterInfo(BHomeShm())->mq_sender_; } |
| | | const MQInfo &BHTopicCenterAddress() { return GetCenterInfo(BHomeShm())->mq_center_; } |
| | | const MQInfo &BHTopicBusAddress() { return GetCenterInfo(BHomeShm())->mq_bus_; } |
| | | const MQInfo &BHCenterReplyAddress() { return GetCenterInfo(BHomeShm())->mq_init_; } |
| | | bool BHNodeInit(const int64_t request, int64_t &reply) |
| | | { |
| | | return GetCenterInfo(BHomeShm())->init_rr_.ClientRequest(request, reply); |
| | | } |
| | | void BHCenterHandleInit(std::function<int64_t(const int64_t)> const &onReq) |
| | | { |
| | | GetCenterInfo(BHomeShm())->init_rr_.ServerProcess(onReq); |
| | | } |
| | | |
| | | int64_t CalcAllocIndex(int64_t size) |
| | | { |
| | |
| | | { |
| | | ec = LastErrorStore().ec_; |
| | | msg = LastErrorStore().msg_; |
| | | } |
| | | } |
| | | |
| | | int NodeTimeoutSec() { return 60; } |