lichao
2021-05-19 34cd75f77d0ca94dbdba4e6cc9451fe4d33e78b3
src/defs.h
@@ -19,19 +19,29 @@
#ifndef DEFS_KP8LKGD0
#define DEFS_KP8LKGD0
#include "robust.h"
#include <atomic>
#include <string>
typedef uint64_t MQId;
const MQId kBHDefaultSender = 99;
const MQId kBHTopicCenter = 100;
const MQId kBHTopicBus = 101;
inline const MQId BHGlobalSenderAddress() { return kBHDefaultSender; }
inline const MQId BHTopicCenterAddress() { return kBHTopicCenter; }
inline const MQId BHTopicBusAddress() { return kBHTopicBus; }
int64_t CalcAllocIndex(int64_t size);
int64_t GetAllocSize(int index);
struct MQInfo {
   MQId id_ = 0;
   int64_t offset_ = 0;
};
struct CenterInfo {
   MQInfo mq_center_;
   MQInfo mq_bus_;
   MQInfo mq_sender_;
   robust::AtomicReqRep init_rr_;
   std::atomic<MQId> mqid_;
   CenterInfo() :
       mqid_(100000) {}
};
const int kBHCenterPort = 24287;
const char kTopicSep = '.';
@@ -42,10 +52,21 @@
std::string BHomeShmName();
bhome_shm::SharedMemory &BHomeShm();
CenterInfo *GetCenterInfo(bhome_shm::SharedMemory &shm);
bool CenterInit(bhome_shm::SharedMemory &shm);
bool GlobalInit(bhome_shm::SharedMemory &shm);
typedef std::string Topic;
void SetLastError(const int ec, const std::string &msg);
void GetLastError(int &ec, std::string &msg);
//TODO center can check shm for previous crash.
const MQInfo &BHGlobalSenderAddress();
const MQInfo &BHTopicCenterAddress();
const MQInfo &BHTopicBusAddress();
bool BHNodeInit(const int64_t request, int64_t &reply);
void BHCenterHandleInit(std::function<int64_t(const int64_t)> const &onReq);
// node mq is avail with in timeout; after that may get killed.
int NodeTimeoutSec();
#endif // end of include guard: DEFS_KP8LKGD0