52 const std::string& deviceId,
53 const std::map<std::string, std::string>& payloads,
77 static const constexpr unsigned MAX_RETRIES = 20;
78 using clock = std::chrono::system_clock;
80 void retrySend(
const std::string& peer,
const std::string& deviceId,
bool retryOnTimeout);
89 std::map<std::string, std::string> payloads {};
92 clock::time_point last_op {};
94 MSGPACK_DEFINE_MAP(token, to, payloads, status, retried, last_op)
98 const std::filesystem::path savePath_;
99 std::shared_ptr<asio::io_context> ioContext_;
100 asio::steady_timer saveTimer_;
102 std::map<std::string, std::list<Message>> messages_;
103 std::map<std::string, std::list<Message>> messagesDevices_;
105 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...