liuxiaolong
2021-07-20 58d904a328c0d849769b483e901a0be9426b8209
src/proto.h
@@ -19,23 +19,26 @@
#define PROTO_UA9UWKL1
#include "bhome_msg.pb.h"
#include "bhome_msg_api.pb.h"
#include <chrono>
using namespace bhome::msg;
using namespace bhome_msg;
template <class Msg>
struct MsgToType {
};
#define BHOME_MAP_MSG_AND_TYPE(mSG, tYPE)              \
   template <>                                        \
   struct MsgToType<mSG> {                            \
      static const bhome::msg::MsgType value = tYPE; \
#define BHOME_MAP_MSG_AND_TYPE(mSG, tYPE)  \
   template <>                            \
   struct MsgToType<mSG> {                \
      static const MsgType value = tYPE; \
   };
#define BHOME_SIMPLE_MAP_MSG(name) BHOME_MAP_MSG_AND_TYPE(Msg##name, kMsgType##name)
BHOME_SIMPLE_MAP_MSG(CommonReply);
BHOME_SIMPLE_MAP_MSG(Register);
BHOME_SIMPLE_MAP_MSG(Unregister);
BHOME_SIMPLE_MAP_MSG(RegisterRPC);
BHOME_SIMPLE_MAP_MSG(Heartbeat);
BHOME_SIMPLE_MAP_MSG(QueryTopic);
@@ -45,12 +48,16 @@
BHOME_SIMPLE_MAP_MSG(Publish);
BHOME_SIMPLE_MAP_MSG(Subscribe);
BHOME_SIMPLE_MAP_MSG(Unsubscribe);
BHOME_SIMPLE_MAP_MSG(ProcInit);
BHOME_SIMPLE_MAP_MSG(ProcInitReply);
BHOME_SIMPLE_MAP_MSG(QueryProc);
BHOME_SIMPLE_MAP_MSG(QueryProcReply);
#undef BHOME_SIMPLE_MAP_MSG
#undef BHOME_MAP_MSG_AND_TYPE
template <class Msg>
constexpr inline bhome::msg::MsgType GetType(const Msg &)
constexpr inline MsgType GetType(const Msg &)
{
   return MsgToType<Msg>::value;
}
@@ -70,9 +77,20 @@
   SetError(*msg.mutable_errmsg(), err_code, err_str);
   return msg;
}
BHMsgHead InitMsgHead(const MsgType type, const std::string &proc_id, const std::string &msgid);
BHMsgHead InitMsgHead(const MsgType type, const std::string &proc_id);
std::string NewMsgId();
BHMsgHead InitMsgHead(const MsgType type, const std::string &proc_id, const uint64_t ssn_id, const std::string &msgid);
BHMsgHead InitMsgHead(const MsgType type, const std::string &proc_id, const uint64_t ssn_id);
// inline void AddRoute(BHMsgHead &head, const MQId &id) { head.add_route()->set_mq_id(&id, sizeof(id)); }
inline bool IsSuccess(const ErrorCode ec) { return ec == eSuccess; }
bool IsMsgExpired(const BHMsgHead &head);
inline int64_t CountSeconds(const std::chrono::steady_clock::time_point tp)
{
   return std::chrono::duration_cast<std::chrono::seconds>(tp.time_since_epoch()).count();
}
inline int64_t NowSec()
{
   return CountSeconds(std::chrono::steady_clock::now());
}
#endif // end of include guard: PROTO_UA9UWKL1