/* */ #ifndef D_DHT_MESSAGE_DISPATCHER_IMPL_H #define D_DHT_MESSAGE_DISPATCHER_IMPL_H #include "DHTMessageDispatcher.h" #include namespace aria2 { class DHTMessageTracker; struct DHTMessageEntry; class DHTMessageDispatcherImpl : public DHTMessageDispatcher { private: std::shared_ptr tracker_; std::deque> messageQueue_; std::chrono::seconds timeout_; bool sendMessage(DHTMessageEntry* msg); public: DHTMessageDispatcherImpl(const std::shared_ptr& tracker); virtual void addMessageToQueue( std::unique_ptr message, std::chrono::seconds timeout, std::unique_ptr callback = std::unique_ptr{}) CXX11_OVERRIDE; virtual void addMessageToQueue( std::unique_ptr message, std::unique_ptr callback = std::unique_ptr{}) CXX11_OVERRIDE; virtual void sendMessages() CXX11_OVERRIDE; virtual size_t countMessageInQueue() const CXX11_OVERRIDE; void setTimeout(std::chrono::seconds timeout) { timeout_ = std::move(timeout); } }; } // namespace aria2 #endif // D_DHT_MESSAGE_DISPATCHER_IMPL_H