/* */ #include "DHTAbstractMessage.h" #include "DHTNode.h" #include "BencodeVisitor.h" #include "DHTConnection.h" #include "Data.h" #include "DHTMessageDispatcher.h" #include "DHTMessageFactory.h" #include "DHTRoutingTable.h" DHTAbstractMessage::DHTAbstractMessage(const DHTNodeHandle& localNode, const DHTNodeHandle& remoteNode, const string& transactionID): DHTMessage(localNode, remoteNode, transactionID) {} DHTAbstractMessage::~DHTAbstractMessage() {} string DHTAbstractMessage::getBencodedMessage() { SharedHandle msg = new Dictionary(); msg->put(string("t"), new Data(_transactionID)); msg->put(string("y"), new Data(getType())); fillMessage(msg.get()); BencodeVisitor v; msg->accept(&v); return v.getBencodedData(); } void DHTAbstractMessage::send() { string message = getBencodedMessage(); _connection->sendMessage(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; }