MockDHTMessageFactory.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #ifndef D_MOCK_DHT_MESSAGE_FACTORY_H
  2. #define D_MOCK_DHT_MESSAGE_FACTORY_H
  3. #include "DHTMessageFactory.h"
  4. #include "DHTNode.h"
  5. #include "MockDHTMessage.h"
  6. #include "DHTPingMessage.h"
  7. #include "DHTPingReplyMessage.h"
  8. #include "DHTFindNodeMessage.h"
  9. #include "DHTFindNodeReplyMessage.h"
  10. #include "DHTGetPeersMessage.h"
  11. #include "DHTGetPeersReplyMessage.h"
  12. #include "DHTAnnouncePeerMessage.h"
  13. #include "DHTAnnouncePeerReplyMessage.h"
  14. #include "DHTUnknownMessage.h"
  15. namespace aria2 {
  16. class MockDHTMessageFactory:public DHTMessageFactory {
  17. protected:
  18. std::shared_ptr<DHTNode> localNode_;
  19. public:
  20. MockDHTMessageFactory() {}
  21. virtual std::unique_ptr<DHTQueryMessage>
  22. createQueryMessage(const Dict* dict,
  23. const std::string& ipaddr, uint16_t port)
  24. {
  25. return std::unique_ptr<DHTQueryMessage>{};
  26. }
  27. virtual std::unique_ptr<DHTResponseMessage>
  28. createResponseMessage(const std::string& messageType,
  29. const Dict* dict,
  30. const std::string& ipaddr, uint16_t port)
  31. {
  32. auto remoteNode = std::make_shared<DHTNode>();
  33. // TODO At this point, removeNode's ID is random.
  34. remoteNode->setIPAddress(ipaddr);
  35. remoteNode->setPort(port);
  36. return make_unique<MockDHTResponseMessage>
  37. (localNode_, remoteNode, downcast<String>(dict->get("t"))->s());
  38. }
  39. virtual std::unique_ptr<DHTPingMessage>
  40. createPingMessage(const std::shared_ptr<DHTNode>& remoteNode,
  41. const std::string& transactionID = "")
  42. {
  43. return std::unique_ptr<DHTPingMessage>{};
  44. }
  45. virtual std::unique_ptr<DHTPingReplyMessage>
  46. createPingReplyMessage(const std::shared_ptr<DHTNode>& remoteNode,
  47. const unsigned char* remoteNodeID,
  48. const std::string& transactionID)
  49. {
  50. return std::unique_ptr<DHTPingReplyMessage>{};
  51. }
  52. virtual std::unique_ptr<DHTFindNodeMessage>
  53. createFindNodeMessage(const std::shared_ptr<DHTNode>& remoteNode,
  54. const unsigned char* targetNodeID,
  55. const std::string& transactionID = "")
  56. {
  57. return std::unique_ptr<DHTFindNodeMessage>{};
  58. }
  59. virtual std::unique_ptr<DHTFindNodeReplyMessage>
  60. createFindNodeReplyMessage
  61. (const std::shared_ptr<DHTNode>& remoteNode,
  62. std::vector<std::shared_ptr<DHTNode>> closestKNodes,
  63. const std::string& transactionID)
  64. {
  65. return std::unique_ptr<DHTFindNodeReplyMessage>{};
  66. }
  67. virtual std::unique_ptr<DHTGetPeersMessage>
  68. createGetPeersMessage(const std::shared_ptr<DHTNode>& remoteNode,
  69. const unsigned char* infoHash,
  70. const std::string& transactionID)
  71. {
  72. return std::unique_ptr<DHTGetPeersMessage>{};
  73. }
  74. virtual std::unique_ptr<DHTGetPeersReplyMessage>
  75. createGetPeersReplyMessage
  76. (const std::shared_ptr<DHTNode>& remoteNode,
  77. std::vector<std::shared_ptr<DHTNode>> closestKNodes,
  78. std::vector<std::shared_ptr<Peer>> peers,
  79. const std::string& token,
  80. const std::string& transactionID)
  81. {
  82. return std::unique_ptr<DHTGetPeersReplyMessage>{};
  83. }
  84. virtual std::unique_ptr<DHTAnnouncePeerMessage>
  85. createAnnouncePeerMessage(const std::shared_ptr<DHTNode>& remoteNode,
  86. const unsigned char* infoHash,
  87. uint16_t tcpPort,
  88. const std::string& token,
  89. const std::string& transactionID = "")
  90. {
  91. return std::unique_ptr<DHTAnnouncePeerMessage>{};
  92. }
  93. virtual std::unique_ptr<DHTAnnouncePeerReplyMessage>
  94. createAnnouncePeerReplyMessage(const std::shared_ptr<DHTNode>& remoteNode,
  95. const std::string& transactionID)
  96. {
  97. return std::unique_ptr<DHTAnnouncePeerReplyMessage>{};
  98. }
  99. virtual std::unique_ptr<DHTUnknownMessage>
  100. createUnknownMessage(const unsigned char* data, size_t length,
  101. const std::string& ipaddr, uint16_t port)
  102. {
  103. return std::unique_ptr<DHTUnknownMessage>{};
  104. }
  105. void setLocalNode(const std::shared_ptr<DHTNode>& node)
  106. {
  107. localNode_ = node;
  108. }
  109. };
  110. } // namespace aria2
  111. #endif // D_MOCK_DHT_MESSAGE_FACTORY_H