53 const std::string& deviceId,
54 const std::map<std::string, std::string>& payloads,
62 const std::string& deviceId = {});
69 const std::string& deviceId = {},
83 static const constexpr unsigned MAX_RETRIES = 20;
84 using clock = std::chrono::system_clock;
86 void retrySend(
const std::string& peer,
87 const std::string& deviceId,
97 std::map<std::string, std::string> payloads {};
100 clock::time_point last_op {};
102 MSGPACK_DEFINE_MAP(token, to, payloads, status, retried, last_op)
106 const std::filesystem::path savePath_;
107 std::shared_ptr<asio::io_context> ioContext_;
108 asio::steady_timer saveTimer_;
110 std::map<std::string, std::list<Message>> messages_;
111 std::map<std::string, std::list<Message>> messagesDevices_;
113 mutable std::mutex messagesMutex_ {};
MessageToken sendMessage(const std::string &to, const std::string &deviceId, const std::map< std::string, std::string > &payloads, uint64_t refreshToken)
Add a message to the engine and try to send it.
void onPeerOnline(const std::string &peer, const std::string &deviceId={}, bool retryOnTimeout=true)
@TODO change MessageEngine by a queue, @NOTE retryOnTimeout is used for failing SIP messages (jamiAcc...