lokinet/llarp/service/intro.cpp

82 lines
2.0 KiB
C++
Raw Normal View History

#include "intro.hpp"
#include "util/time.hpp"
namespace llarp
{
namespace service
{
2019-02-11 17:14:43 +00:00
util::StatusObject
Introduction::ExtractStatus() const
2019-02-08 19:43:25 +00:00
{
2021-03-05 17:31:52 +00:00
util::StatusObject obj{
{"router", router.ToHex()},
{"path", pathID.ToHex()},
2021-03-05 17:31:52 +00:00
{"expiresAt", to_json(expiresAt)},
{"latency", to_json(latency)},
{"version", uint64_t(version)}};
2019-02-11 17:14:43 +00:00
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 > 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;
2020-02-24 19:40:45 +00:00
expiresAt = 0s;
}
2019-02-24 23:46:37 +00:00
std::string
Introduction::ToString() const
{
2022-07-18 17:56:09 +00:00
return fmt::format(
"[Intro k={} l={} p={} v={} x={}]",
RouterID{router},
latency.count(),
pathID,
version,
expiresAt.count());
}
2019-01-17 14:02:50 +00:00
} // namespace service
} // namespace llarp