lokinet/llarp/service/intro.cpp
Stephen Shelton 273270916e
The Great Wall of Blame
This commit reflects changes to clang-format rules. Unfortunately,
these rule changes create a massive change to the codebase, which
causes an apparent rewrite of git history.

Git blame's --ignore-rev flag can be used to ignore this commit when
attempting to `git blame` some code.
2020-04-07 12:38:56 -06:00

79 lines
2.1 KiB
C++

#include <service/intro.hpp>
namespace llarp
{
namespace service
{
util::StatusObject
Introduction::ExtractStatus() const
{
util::StatusObject obj{{"router", router.ToHex()},
{"expiresAt", to_json(expiresAt)},
{"latency", to_json(latency)},
{"version", uint64_t(version)}};
return obj;
}
bool
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 > 0s)
{
if (!BEncodeWriteDictInt("l", latency.count(), buf))
return false;
}
if (!BEncodeWriteDictEntry("p", pathID, buf))
return false;
if (!BEncodeWriteDictInt("v", version, buf))
return false;
if (!BEncodeWriteDictInt("x", expiresAt.count(), buf))
return false;
return bencode_end(buf);
}
void
Introduction::Clear()
{
router.Zero();
pathID.Zero();
latency = 0s;
expiresAt = 0s;
}
std::ostream&
Introduction::print(std::ostream& stream, int level, int spaces) const
{
Printer printer(stream, level, spaces);
printer.printAttribute("k", RouterID(router));
printer.printAttribute("l", latency.count());
printer.printAttribute("p", pathID);
printer.printAttribute("v", version);
printer.printAttribute("x", expiresAt.count());
return stream;
}
} // namespace service
} // namespace llarp