/* */ #ifndef _D_DHT_MESSAGE_TRACKER_H_ #define _D_DHT_MESSAGE_TRACKER_H_ #include "common.h" #include "DHTMessageTrackerDecl.h" #include "DHTMessageDecl.h" #include "DHTMessageCallbackDecl.h" #include "DHTMessageTrackerEntryDecl.h" #include "DHTRoutingTableDecl.h" #include "DHTMessageFactoryDecl.h" class Logger; class Dictionary; class DHTMessageTracker { private: DHTMessageTrackerEntries _entries; DHTRoutingTableHandle _routingTable; DHTMessageFactoryHandle _factory; const Logger* _logger; public: DHTMessageTracker(); ~DHTMessageTracker(); void addMessage(const DHTMessageHandle& message, time_t timeout, const DHTMessageCallbackHandle& callback = 0); void addMessage(const DHTMessageHandle& message, const DHTMessageCallbackHandle& callback = 0); pair messageArrived(const Dictionary* d, const string& ipaddr, uint16_t port); void handleTimeout(); DHTMessageTrackerEntryHandle getEntryFor(const DHTMessageHandle& message) const; size_t countEntry() const; void setRoutingTable(const DHTRoutingTableHandle& routingTable); void setMessageFactory(const DHTMessageFactoryHandle& factory); }; #endif // _D_DHT_MESSAGE_TRACKER_H_