File indexing completed on 2025-01-05 04:37:11

0001 /*
0002     SPDX-FileCopyrightText: 2012 Joris Guisson <joris.guisson@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "pingrsp.h"
0008 #include "dht.h"
0009 #include <bcodec/bencoder.h>
0010 #include <util/log.h>
0011 
0012 using namespace bt;
0013 
0014 namespace dht
0015 {
0016 PingRsp::PingRsp()
0017     : RPCMsg(QByteArray(), PING, RSP_MSG, Key())
0018 {
0019 }
0020 
0021 PingRsp::PingRsp(const QByteArray &mtid, const Key &id)
0022     : RPCMsg(mtid, PING, RSP_MSG, id)
0023 {
0024 }
0025 
0026 PingRsp::~PingRsp()
0027 {
0028 }
0029 
0030 void PingRsp::apply(dht::DHT *dh_table)
0031 {
0032     dh_table->response(*this);
0033 }
0034 
0035 void PingRsp::print()
0036 {
0037     Out(SYS_DHT | LOG_DEBUG) << QString("RSP: %1 %2 : ping").arg(mtid[0]).arg(id.toString()) << endl;
0038 }
0039 
0040 void PingRsp::encode(QByteArray &arr) const
0041 {
0042     BEncoder enc(new BEncoderBufferOutput(arr));
0043     enc.beginDict();
0044     {
0045         enc.write(RSP);
0046         enc.beginDict();
0047         {
0048             enc.write(QByteArrayLiteral("id"));
0049             enc.write(id.getData(), 20);
0050         }
0051         enc.end();
0052         enc.write(TID);
0053         enc.write(mtid);
0054         enc.write(TYP);
0055         enc.write(RSP);
0056     }
0057     enc.end();
0058 }
0059 }