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. 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 addMessageToQueue(
  26. std::unique_ptr<DHTMessage> message, std::chrono::seconds timeout,
  27. std::unique_ptr<DHTMessageCallback>
  28. callback = std::unique_ptr<DHTMessageCallback>{}) CXX11_OVERRIDE
  29. {
  30. messageQueue_.push_back(
  31. Entry(std::move(message), std::move(timeout), std::move(callback)));
  32. }
  33. virtual void addMessageToQueue(
  34. std::unique_ptr<DHTMessage> message,
  35. std::unique_ptr<DHTMessageCallback>
  36. callback = std::unique_ptr<DHTMessageCallback>{}) CXX11_OVERRIDE
  37. {
  38. messageQueue_.push_back(
  39. Entry(std::move(message), DHT_MESSAGE_TIMEOUT, 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