/* */ #include "DHTAbstractMessage.h" #include "DHTNode.h" #include "BencodeVisitor.h" #include "DHTConnection.h" #include "Dictionary.h" #include "Data.h" #include "DHTMessageDispatcher.h" #include "DHTMessageFactory.h" #include "DHTRoutingTable.h" #include "DHTMessageCallback.h" namespace aria2 { DHTAbstractMessage::DHTAbstractMessage(const SharedHandle& localNode, const SharedHandle& remoteNode, const std::string& transactionID): DHTMessage(localNode, remoteNode, transactionID) {} DHTAbstractMessage::~DHTAbstractMessage() {} std::string DHTAbstractMessage::getBencodedMessage() { SharedHandle msg(new Dictionary()); msg->put(DHTMessage::T, new Data(_transactionID)); msg->put(DHTMessage::Y, new Data(getType())); fillMessage(msg.get()); BencodeVisitor v; msg->accept(&v); return v.getBencodedData(); } void DHTAbstractMessage::send() { std::string message = getBencodedMessage(); _connection->sendMessage(reinterpret_cast(message.c_str()), message.size(), _remoteNode->getIPAddress(), _remoteNode->getPort()); } void DHTAbstractMessage::setConnection(const WeakHandle& connection) { _connection = connection; } void DHTAbstractMessage::setMessageDispatcher(const WeakHandle& dispatcher) { _dispatcher = dispatcher; } void DHTAbstractMessage::setMessageFactory(const WeakHandle& factory) { _factory = factory; } void DHTAbstractMessage::setRoutingTable(const WeakHandle& routingTable) { _routingTable = routingTable; } } // namespace aria2