MockDHTMessageDispatcher.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef D_MOCK_DHT_MESSAGE_DISPATCHER_H
  2. #define D_MOCK_DHT_MESSAGE_DISPATCHER_H
  3. #include "DHTMessageDispatcher.h"
  4. #include "DHTMessageCallback.h"
  5. #include "DHTMessage.h"
  6. #include "DHTConstants.h"
  7. namespace aria2 {
  8. class MockDHTMessageDispatcher:public DHTMessageDispatcher {
  9. public:
  10. struct Entry {
  11. std::unique_ptr<DHTMessage> message_;
  12. time_t timeout_;
  13. std::unique_ptr<DHTMessageCallback> callback_;
  14. Entry(std::unique_ptr<DHTMessage> message, time_t timeout,
  15. std::unique_ptr<DHTMessageCallback> callback)
  16. : message_{std::move(message)},
  17. timeout_{timeout},
  18. callback_{std::move(callback)}
  19. {}
  20. };
  21. std::deque<Entry> messageQueue_;
  22. public:
  23. MockDHTMessageDispatcher() {}
  24. virtual void
  25. addMessageToQueue(std::unique_ptr<DHTMessage> message,
  26. time_t timeout,
  27. std::unique_ptr<DHTMessageCallback> callback =
  28. std::unique_ptr<DHTMessageCallback>{}) CXX11_OVERRIDE
  29. {
  30. messageQueue_.push_back(Entry(std::move(message), timeout,
  31. std::move(callback)));
  32. }
  33. virtual void
  34. addMessageToQueue(std::unique_ptr<DHTMessage> message,
  35. std::unique_ptr<DHTMessageCallback> callback =
  36. std::unique_ptr<DHTMessageCallback>{}) CXX11_OVERRIDE
  37. {
  38. messageQueue_.push_back(Entry(std::move(message), DHT_MESSAGE_TIMEOUT,
  39. std::move(callback)));
  40. }
  41. virtual void sendMessages() CXX11_OVERRIDE {}
  42. virtual size_t countMessageInQueue() const CXX11_OVERRIDE
  43. {
  44. return messageQueue_.size();
  45. }
  46. };
  47. } // namespace aria2
  48. #endif // D_MOCK_DHT_MESSAGE_DISPATCHER_H