2021-03-09 23:24:35 +01:00
|
|
|
#include "session.hpp"
|
2019-04-21 20:38:30 +02:00
|
|
|
|
|
|
|
namespace llarp
|
|
|
|
{
|
|
|
|
namespace service
|
|
|
|
{
|
|
|
|
util::StatusObject
|
|
|
|
Session::ExtractStatus() const
|
|
|
|
{
|
2021-03-05 18:31:52 +01:00
|
|
|
util::StatusObject obj{
|
2021-04-02 17:10:37 +02:00
|
|
|
{"lastSend", to_json(lastSend)},
|
|
|
|
{"lastRecv", to_json(lastRecv)},
|
2021-03-05 18:31:52 +01:00
|
|
|
{"replyIntro", replyIntro.ExtractStatus()},
|
2021-06-03 14:21:15 +02:00
|
|
|
{"remote", Addr().ToString()},
|
2021-03-05 18:31:52 +01:00
|
|
|
{"seqno", seqno},
|
2021-04-02 17:10:37 +02:00
|
|
|
{"tx", messagesSend},
|
|
|
|
{"rx", messagesRecv},
|
2021-03-05 18:31:52 +01:00
|
|
|
{"intro", intro.ExtractStatus()}};
|
2019-04-21 20:38:30 +02:00
|
|
|
return obj;
|
2019-04-26 01:21:19 +02:00
|
|
|
}
|
2019-06-14 14:49:45 +02:00
|
|
|
|
2021-06-03 14:21:15 +02:00
|
|
|
Address
|
|
|
|
Session::Addr() const
|
|
|
|
{
|
|
|
|
return remote.Addr();
|
|
|
|
}
|
|
|
|
|
2019-06-14 14:49:45 +02:00
|
|
|
bool
|
|
|
|
Session::IsExpired(llarp_time_t now, llarp_time_t lifetime) const
|
|
|
|
{
|
2021-03-31 19:09:34 +02:00
|
|
|
if (forever)
|
|
|
|
return false;
|
2021-04-02 17:10:37 +02:00
|
|
|
const auto lastUsed = std::max(lastSend, lastRecv);
|
2021-04-03 14:19:46 +02:00
|
|
|
if (lastUsed == 0s)
|
2021-04-02 18:32:07 +02:00
|
|
|
return intro.IsExpired(now);
|
2021-05-03 21:16:23 +02:00
|
|
|
return now >= lastUsed && (now - lastUsed > lifetime);
|
2019-06-14 14:49:45 +02:00
|
|
|
}
|
|
|
|
|
2021-04-02 17:10:37 +02:00
|
|
|
void
|
|
|
|
Session::TX()
|
|
|
|
{
|
|
|
|
messagesSend++;
|
|
|
|
lastSend = time_now_ms();
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
Session::RX()
|
|
|
|
{
|
|
|
|
messagesRecv++;
|
|
|
|
lastRecv = time_now_ms();
|
|
|
|
}
|
|
|
|
|
2019-04-21 20:38:30 +02:00
|
|
|
} // namespace service
|
|
|
|
} // namespace llarp
|