lokinet/llarp/service/Intro.cpp

82 lines
2.1 KiB
C++
Raw Normal View History

2018-12-15 16:21:52 +00:00
#include <service/Intro.hpp>
namespace llarp
{
namespace service
{
Introduction::~Introduction()
{
}
2019-02-11 17:14:43 +00:00
util::StatusObject
Introduction::ExtractStatus() const
2019-02-08 19:43:25 +00:00
{
2019-02-11 17:14:43 +00:00
util::StatusObject obj{{"router", router.ToHex()},
{"expiresAt", expiresAt},
{"latency", latency},
{"version", uint64_t(version)}};
return obj;
2019-02-08 19:43:25 +00:00
}
bool
2019-02-05 00:41:33 +00:00
Introduction::DecodeKey(const llarp_buffer_t& key, llarp_buffer_t* buf)
{
bool read = false;
if(!BEncodeMaybeReadDictEntry("k", router, read, key, buf))
return false;
if(!BEncodeMaybeReadDictInt("l", latency, read, key, buf))
return false;
if(!BEncodeMaybeReadDictEntry("p", pathID, read, key, buf))
return false;
if(!BEncodeMaybeReadDictInt("v", version, read, key, buf))
return false;
if(!BEncodeMaybeReadDictInt("x", expiresAt, read, key, buf))
return false;
return read;
}
bool
Introduction::BEncode(llarp_buffer_t* buf) const
{
if(!bencode_start_dict(buf))
return false;
if(!BEncodeWriteDictEntry("k", router, buf))
return false;
if(latency)
{
if(!BEncodeWriteDictInt("l", latency, buf))
return false;
}
if(!BEncodeWriteDictEntry("p", pathID, buf))
return false;
if(!BEncodeWriteDictInt("v", version, buf))
return false;
if(!BEncodeWriteDictInt("x", expiresAt, buf))
return false;
return bencode_end(buf);
}
void
Introduction::Clear()
{
router.Zero();
pathID.Zero();
latency = 0;
expiresAt = 0;
}
2019-02-24 23:46:37 +00:00
std::ostream&
Introduction::print(std::ostream& stream, int level, int spaces) const
{
Printer printer(stream, level, spaces);
printer.printAttribute("k", router);
printer.printAttribute("p", pathID);
printer.printAttribute("v", version);
printer.printAttribute("x", expiresAt);
return stream;
}
2019-01-17 14:02:50 +00:00
} // namespace service
} // namespace llarp