lichao
2021-04-29 72bffb0807925a156b076b71f78c848a08d27b87
src/sendq.h
@@ -29,15 +29,12 @@
#include <string>
#include <unordered_map>
namespace bhome_shm
{
class ShmMsgQueue;
} // namespace bhome_shm
class SendQ
{
public:
   typedef std::string Remote;
   typedef MQId Remote;
   typedef bhome_msg::MsgI MsgI;
   typedef std::string Content;
   typedef boost::variant2::variant<MsgI, Content> Data;
@@ -50,28 +47,28 @@
   typedef TimedMsg::TimePoint TimePoint;
   typedef TimedMsg::Duration Duration;
   template <class... Rest>
   void Append(const MQId &id, Rest &&...rest)
   {
      Append(std::string((const char *) &id, sizeof(id)), std::forward<decltype(rest)>(rest)...);
   }
   // template <class... Rest>
   // void Append(const MQId &id, Rest &&...rest)
   // {
   //    Append(std::string((const char *) &id, sizeof(id)), std::forward<decltype(rest)>(rest)...);
   // }
   void Append(const Remote &addr, const MsgI &msg, OnMsgEvent onExpire = OnMsgEvent())
   void Append(const Remote addr, const MsgI msg, OnMsgEvent onExpire = OnMsgEvent())
   {
      msg.AddRef();
      AppendData(addr, Data(msg), DefaultExpire(), onExpire);
   }
   void Append(const Remote &addr, Content &&content, OnMsgEvent onExpire = OnMsgEvent())
   void Append(const Remote addr, Content &&content, OnMsgEvent onExpire = OnMsgEvent())
   {
      AppendData(addr, Data(std::move(content)), DefaultExpire(), onExpire);
   }
   bool TrySend(bhome_shm::ShmMsgQueue &mq);
   bool TrySend(ShmMsgQueue &mq);
   // bool empty() const { return store_.empty(); }
private:
   static TimePoint Now() { return TimedMsg::Clock::now(); }
   static TimePoint DefaultExpire() { return Now() + std::chrono::seconds(60); }
   void AppendData(const Remote &addr, Data &&data, const TimePoint &expire, OnMsgEvent onExpire)
   void AppendData(const Remote addr, Data &&data, const TimePoint &expire, OnMsgEvent onExpire)
   {
      //TODO simple queue, organize later ?
@@ -88,8 +85,8 @@
   typedef std::list<Array> ArrayList;
   typedef std::unordered_map<Remote, ArrayList> Store;
   int DoSend1Remote(bhome_shm::ShmMsgQueue &mq, const Remote &remote, Array &arr);
   int DoSend1Remote(bhome_shm::ShmMsgQueue &mq, const Remote &remote, ArrayList &arr);
   int DoSend1Remote(ShmMsgQueue &mq, const Remote remote, Array &arr);
   int DoSend1Remote(ShmMsgQueue &mq, const Remote remote, ArrayList &arr);
   std::mutex mutex_in_;
   std::mutex mutex_out_;