MockDHTMessageDispatcher.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. std::chrono::seconds timeout_;
  13. std::unique_ptr<DHTMessageCallback> callback_;
  14. Entry(std::unique_ptr<DHTMessage> message, std::chrono::seconds timeout,
  15. std::unique_ptr<DHTMessageCallback> callback)
  16. : message_{std::move(message)},
  17. timeout_{std::move(timeout)},
  18. callback_{std::move(callback)}
  19. {
  20. }
  21. };
  22. std::deque<Entry> messageQueue_;
  23. public:
  24. MockDHTMessageDispatcher() {}
  25. virtual void
  26. addMessageToQueue(std::unique_ptr<DHTMessage> message,
  27. std::chrono::seconds timeout,
  28. std::unique_ptr<DHTMessageCallback> callback =
  29. std::unique_ptr<DHTMessageCallback>{}) CXX11_OVERRIDE
  30. {
  31. messageQueue_.push_back(
  32. Entry(std::move(message), std::move(timeout), std::move(callback)));
  33. }
  34. virtual void
  35. addMessageToQueue(std::unique_ptr<DHTMessage> message,
  36. std::unique_ptr<DHTMessageCallback> callback =
  37. std::unique_ptr<DHTMessageCallback>{}) CXX11_OVERRIDE
  38. {
  39. messageQueue_.push_back(
  40. Entry(std::move(message), DHT_MESSAGE_TIMEOUT, std::move(callback)));
  41. }
  42. virtual void sendMessages() CXX11_OVERRIDE {}
  43. virtual size_t countMessageInQueue() const CXX11_OVERRIDE
  44. {
  45. return messageQueue_.size();
  46. }
  47. };
  48. } // namespace aria2
  49. #endif // D_MOCK_DHT_MESSAGE_DISPATCHER_H