Remove IStateful virtual inheritance

pull/533/head
Michael 5 years ago
parent 1a0fd5d318
commit c39c931d03
No known key found for this signature in database
GPG Key ID: 2D51757B47E2434C

@ -14,7 +14,7 @@ namespace llarp
namespace dht namespace dht
{ {
template < typename Val_t > template < typename Val_t >
struct Bucket : public util::IStateful struct Bucket
{ {
using BucketStorage_t = std::map< Key_t, Val_t, XorMetric >; using BucketStorage_t = std::map< Key_t, Val_t, XorMetric >;
using Random_t = std::function< uint64_t() >; using Random_t = std::function< uint64_t() >;
@ -22,7 +22,7 @@ namespace llarp
Bucket(const Key_t& us, Random_t r) : nodes(XorMetric(us)), random(r){}; Bucket(const Key_t& us, Random_t r) : nodes(XorMetric(us)), random(r){};
util::StatusObject util::StatusObject
ExtractStatus() const override ExtractStatus() const
{ {
util::StatusObject obj{}; util::StatusObject obj{};
for(const auto& item : nodes) for(const auto& item : nodes)

@ -63,7 +63,7 @@ namespace llarp
void void
LookupRouterRecursive(const RouterID& target, const Key_t& whoasked, LookupRouterRecursive(const RouterID& target, const Key_t& whoasked,
uint64_t whoaskedTX, const Key_t& askpeer, uint64_t whoaskedTX, const Key_t& askpeer,
RouterLookupHandler result = nullptr); RouterLookupHandler result = nullptr) override;
bool bool
LookupRouter(const RouterID& target, RouterLookupHandler result) override LookupRouter(const RouterID& target, RouterLookupHandler result) override

@ -23,7 +23,7 @@ namespace llarp
namespace dht namespace dht
{ {
struct AbstractContext : public util::IStateful struct AbstractContext
{ {
using PendingIntrosetLookups = using PendingIntrosetLookups =
TXHolder< service::Address, service::IntroSet, TXHolder< service::Address, service::IntroSet,
@ -175,6 +175,9 @@ namespace llarp
virtual Bucket< RCNode >* virtual Bucket< RCNode >*
Nodes() const = 0; Nodes() const = 0;
virtual util::StatusObject
ExtractStatus() const = 0;
}; };
std::unique_ptr< AbstractContext > std::unique_ptr< AbstractContext >

@ -9,7 +9,7 @@ namespace llarp
{ {
namespace dht namespace dht
{ {
struct RCNode : public util::IStateful struct RCNode
{ {
RouterContact rc; RouterContact rc;
Key_t ID; Key_t ID;
@ -24,7 +24,7 @@ namespace llarp
} }
util::StatusObject util::StatusObject
ExtractStatus() const override ExtractStatus() const
{ {
return rc.ExtractStatus(); return rc.ExtractStatus();
} }
@ -36,7 +36,7 @@ namespace llarp
} }
}; };
struct ISNode : public util::IStateful struct ISNode
{ {
service::IntroSet introset; service::IntroSet introset;
@ -53,7 +53,7 @@ namespace llarp
} }
util::StatusObject util::StatusObject
ExtractStatus() const override ExtractStatus() const
{ {
return introset.ExtractStatus(); return introset.ExtractStatus();
} }

@ -16,7 +16,7 @@ namespace llarp
struct AbstractContext; struct AbstractContext;
template < typename K, typename V > template < typename K, typename V >
struct TX : public util::IStateful struct TX
{ {
K target; K target;
AbstractContext* parent; AbstractContext* parent;
@ -39,7 +39,7 @@ namespace llarp
AskNextPeer(const Key_t& prevPeer, const std::unique_ptr< Key_t >& next); AskNextPeer(const Key_t& prevPeer, const std::unique_ptr< Key_t >& next);
util::StatusObject util::StatusObject
ExtractStatus() const override ExtractStatus() const
{ {
util::StatusObject obj{{"whoasked", whoasked.ExtractStatus()}, util::StatusObject obj{{"whoasked", whoasked.ExtractStatus()},
{"target", target.ToHex()}}; {"target", target.ToHex()}};

@ -16,7 +16,7 @@ namespace llarp
{ {
template < typename K, typename V, typename K_Hash, template < typename K, typename V, typename K_Hash,
llarp_time_t requestTimeoutMS = 5000UL > llarp_time_t requestTimeoutMS = 5000UL >
struct TXHolder : public util::IStateful struct TXHolder
{ {
using TXPtr = std::unique_ptr< TX< K, V > >; using TXPtr = std::unique_ptr< TX< K, V > >;
// tx who are waiting for a reply for each key // tx who are waiting for a reply for each key
@ -30,7 +30,7 @@ namespace llarp
GetPendingLookupFrom(const TXOwner& owner) const; GetPendingLookupFrom(const TXOwner& owner) const;
util::StatusObject util::StatusObject
ExtractStatus() const override ExtractStatus() const
{ {
util::StatusObject obj{}; util::StatusObject obj{};
std::vector< util::StatusObject > txObjs, timeoutsObjs, waitingObjs; std::vector< util::StatusObject > txObjs, timeoutsObjs, waitingObjs;

@ -9,7 +9,7 @@ namespace llarp
{ {
namespace dht namespace dht
{ {
struct TXOwner : public util::IStateful struct TXOwner
{ {
Key_t node; Key_t node;
uint64_t txid = 0; uint64_t txid = 0;
@ -26,7 +26,7 @@ namespace llarp
} }
util::StatusObject util::StatusObject
ExtractStatus() const override ExtractStatus() const
{ {
util::StatusObject obj{ util::StatusObject obj{
{"txid", txid}, {"txid", txid},

@ -11,7 +11,7 @@ namespace llarp
namespace exit namespace exit
{ {
/// owner of all the exit endpoints /// owner of all the exit endpoints
struct Context : public util::IStateful struct Context
{ {
using Config_t = std::unordered_multimap< std::string, std::string >; using Config_t = std::unordered_multimap< std::string, std::string >;
@ -25,7 +25,7 @@ namespace llarp
ClearAllEndpoints(); ClearAllEndpoints();
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
/// send close to all exit sessions and remove all sessions /// send close to all exit sessions and remove all sessions
void void

@ -19,7 +19,7 @@ namespace llarp
namespace exit namespace exit
{ {
/// persistant exit state for 1 identity on the exit node /// persistant exit state for 1 identity on the exit node
struct Endpoint : public util::IStateful struct Endpoint
{ {
static constexpr size_t MaxUpstreamQueueSize = 256; static constexpr size_t MaxUpstreamQueueSize = 256;
@ -35,7 +35,7 @@ namespace llarp
/// implement istateful /// implement istateful
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
/// return true if we are expired right now /// return true if we are expired right now
bool bool

@ -30,7 +30,7 @@ namespace llarp
virtual ~BaseSession(); virtual ~BaseSession();
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
bool bool
ShouldBundleRC() const override ShouldBundleRC() const override

@ -11,7 +11,7 @@ namespace llarp
struct AbstractRouter; struct AbstractRouter;
namespace handlers namespace handlers
{ {
struct ExitEndpoint : public dns::IQueryHandler, public util::IStateful struct ExitEndpoint : public dns::IQueryHandler
{ {
ExitEndpoint(const std::string& name, AbstractRouter* r); ExitEndpoint(const std::string& name, AbstractRouter* r);
~ExitEndpoint(); ~ExitEndpoint();
@ -26,7 +26,7 @@ namespace llarp
Name() const; Name() const;
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
bool bool
ShouldHookDNSMessage(const dns::Message& msg) const override; ShouldHookDNSMessage(const dns::Message& msg) const override;

@ -33,7 +33,7 @@ namespace llarp
Tick(llarp_time_t now) override; Tick(llarp_time_t now) override;
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
bool bool
ShouldHookDNSMessage(const dns::Message& msg) const override; ShouldHookDNSMessage(const dns::Message& msg) const override;

@ -45,7 +45,7 @@ namespace llarp
/// handles close of all sessions with pubkey /// handles close of all sessions with pubkey
using SessionClosedHandler = std::function< void(llarp::RouterID) >; using SessionClosedHandler = std::function< void(llarp::RouterID) >;
struct ILinkLayer : public util::IStateful struct ILinkLayer
{ {
ILinkLayer(const SecretKey& routerEncSecret, GetRCFunc getrc, ILinkLayer(const SecretKey& routerEncSecret, GetRCFunc getrc,
LinkMessageHandler handler, SignBufferFunc signFunc, LinkMessageHandler handler, SignBufferFunc signFunc,
@ -135,7 +135,7 @@ namespace llarp
Name() const = 0; Name() const = 0;
util::StatusObject util::StatusObject
ExtractStatus() const override LOCKS_EXCLUDED(m_AuthedLinksMutex); ExtractStatus() const LOCKS_EXCLUDED(m_AuthedLinksMutex);
void void
CloseSessionTo(const RouterID& remote); CloseSessionTo(const RouterID& remote);

@ -13,7 +13,7 @@ namespace llarp
struct LinkIntroMessage; struct LinkIntroMessage;
struct ILinkMessage; struct ILinkMessage;
struct ILinkLayer; struct ILinkLayer;
struct ILinkSession : public util::IStateful struct ILinkSession
{ {
virtual ~ILinkSession(){}; virtual ~ILinkSession(){};
@ -81,6 +81,9 @@ namespace llarp
/// return true if we should send an explicit keepalive message /// return true if we should send an explicit keepalive message
virtual bool virtual bool
ShouldPing() const = 0; ShouldPing() const = 0;
virtual util::StatusObject
ExtractStatus() const = 0;
}; };
} // namespace llarp } // namespace llarp

@ -279,7 +279,7 @@ namespace llarp
} }
/// configuration for a single hop when building a path /// configuration for a single hop when building a path
struct PathHopConfig : public util::IStateful struct PathHopConfig
{ {
/// path id /// path id
PathID_t txID, rxID; PathID_t txID, rxID;
@ -302,13 +302,11 @@ namespace llarp
PathHopConfig(); PathHopConfig();
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
}; };
/// A path we made /// A path we made
struct Path : public IHopHandler, struct Path : public IHopHandler, public llarp::routing::IMessageHandler
public llarp::routing::IMessageHandler,
public util::IStateful
{ {
using BuildResultHookFunc = std::function< void(Path*) >; using BuildResultHookFunc = std::function< void(Path*) >;
using CheckForDeadFunc = std::function< bool(Path*, llarp_time_t) >; using CheckForDeadFunc = std::function< bool(Path*, llarp_time_t) >;
@ -336,7 +334,7 @@ namespace llarp
PathRole startingRoles); PathRole startingRoles);
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
PathRole PathRole
Role() const Role() const

@ -15,7 +15,7 @@ namespace llarp
// milliseconds waiting between builds on a path // milliseconds waiting between builds on a path
constexpr llarp_time_t MIN_PATH_BUILD_INTERVAL = 1000; constexpr llarp_time_t MIN_PATH_BUILD_INTERVAL = 1000;
struct Builder : public PathSet, public util::IStateful struct Builder : public PathSet
{ {
protected: protected:
/// flag for PathSet::Stop() /// flag for PathSet::Stop()
@ -38,8 +38,8 @@ namespace llarp
virtual ~Builder(); virtual ~Builder();
virtual util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
virtual bool virtual bool
SelectHop(llarp_nodedb* db, const RouterContact& prev, RouterContact& cur, SelectHop(llarp_nodedb* db, const RouterContact& prev, RouterContact& cur,

@ -2,4 +2,7 @@
namespace llarp namespace llarp
{ {
AbstractRouter::~AbstractRouter()
{
}
} // namespace llarp } // namespace llarp

@ -45,8 +45,10 @@ namespace llarp
struct Context; struct Context;
} }
struct AbstractRouter : public util::IStateful struct AbstractRouter
{ {
virtual ~AbstractRouter() = 0;
virtual bool virtual bool
OnSessionEstablished(ILinkSession *) = 0; OnSessionEstablished(ILinkSession *) = 0;
@ -192,6 +194,9 @@ namespace llarp
virtual bool virtual bool
ConnectionToRouterAllowed(const RouterID &router) const = 0; ConnectionToRouterAllowed(const RouterID &router) const = 0;
virtual util::StatusObject
ExtractStatus() const = 0;
}; };
} // namespace llarp } // namespace llarp

@ -65,7 +65,7 @@ namespace llarp
} }
/// RouterContact /// RouterContact
struct RouterContact final : public IBEncodeMessage, public util::IStateful struct RouterContact final : public IBEncodeMessage
{ {
/// for unit tests /// for unit tests
static bool IgnoreBogons; static bool IgnoreBogons;
@ -117,7 +117,7 @@ namespace llarp
uint64_t last_updated = 0; uint64_t last_updated = 0;
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
bool bool
BEncode(llarp_buffer_t *buf) const override; BEncode(llarp_buffer_t *buf) const override;

@ -6,7 +6,7 @@
namespace llarp namespace llarp
{ {
struct RouterID : public AlignedBuffer< 32 >, public util::IStateful struct RouterID : public AlignedBuffer< 32 >
{ {
static constexpr size_t SIZE = 32; static constexpr size_t SIZE = 32;
@ -25,7 +25,7 @@ namespace llarp
} }
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
std::string std::string
ToString() const; ToString() const;

@ -12,11 +12,10 @@ namespace llarp
{ {
namespace service namespace service
{ {
struct Introduction final : public llarp::IBEncodeMessage, struct Introduction final : public IBEncodeMessage
public util::IStateful
{ {
llarp::PubKey router; PubKey router;
llarp::PathID_t pathID; PathID_t pathID;
uint64_t latency = 0; uint64_t latency = 0;
uint64_t version = 0; uint64_t version = 0;
uint64_t expiresAt = 0; uint64_t expiresAt = 0;
@ -32,7 +31,7 @@ namespace llarp
} }
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
bool bool
IsExpired(llarp_time_t now) const IsExpired(llarp_time_t now) const

@ -24,11 +24,10 @@ namespace llarp
constexpr std::size_t MAX_INTROSET_SIZE = 4096; constexpr std::size_t MAX_INTROSET_SIZE = 4096;
// 10 seconds clock skew permitted for introset expiration // 10 seconds clock skew permitted for introset expiration
constexpr llarp_time_t MAX_INTROSET_TIME_DELTA = (10 * 1000); constexpr llarp_time_t MAX_INTROSET_TIME_DELTA = (10 * 1000);
struct IntroSet final : public llarp::IBEncodeMessage, struct IntroSet final : public llarp::IBEncodeMessage
public util::IStateful
{ {
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
ServiceInfo A; ServiceInfo A;
std::vector< Introduction > I; std::vector< Introduction > I;

@ -13,7 +13,7 @@ namespace llarp
namespace service namespace service
{ {
/// holds all the hidden service endpoints we own /// holds all the hidden service endpoints we own
struct Context : public util::IStateful struct Context
{ {
Context(AbstractRouter *r); Context(AbstractRouter *r);
~Context(); ~Context();
@ -26,7 +26,7 @@ namespace llarp
StopAll(); StopAll();
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
bool bool
hasEndpoints(); hasEndpoints();

@ -40,8 +40,8 @@ namespace llarp
Endpoint(const std::string& nickname, AbstractRouter* r, Context* parent); Endpoint(const std::string& nickname, AbstractRouter* r, Context* parent);
~Endpoint(); ~Endpoint();
virtual util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
void void
SetHandler(IDataHandler* h); SetHandler(IDataHandler* h);
@ -281,7 +281,7 @@ namespace llarp
~OutboundContext(); ~OutboundContext();
util::StatusObject util::StatusObject
ExtractStatus() const override; ExtractStatus() const;
bool bool
ShouldBundleRC() const override ShouldBundleRC() const override
@ -574,7 +574,7 @@ namespace llarp
/// on initialize functions /// on initialize functions
std::list< std::function< bool(void) > > m_OnInit; std::list< std::function< bool(void) > > m_OnInit;
struct Session : public util::IStateful struct Session
{ {
Introduction replyIntro; Introduction replyIntro;
SharedSecret sharedKey; SharedSecret sharedKey;
@ -584,7 +584,7 @@ namespace llarp
uint64_t seqno = 0; uint64_t seqno = 0;
util::StatusObject util::StatusObject
ExtractStatus() const override ExtractStatus() const
{ {
util::StatusObject obj{{"lastUsed", lastUsed}, util::StatusObject obj{{"lastUsed", lastUsed},
{"replyIntro", replyIntro.ExtractStatus()}, {"replyIntro", replyIntro.ExtractStatus()},

@ -20,7 +20,7 @@ namespace llarp
constexpr size_t MaxConcurrentLookups = size_t(4); constexpr size_t MaxConcurrentLookups = size_t(4);
struct IServiceLookup : public util::IStateful struct IServiceLookup
{ {
IServiceLookup() = delete; IServiceLookup() = delete;
virtual ~IServiceLookup(){}; virtual ~IServiceLookup(){};
@ -56,7 +56,7 @@ namespace llarp
RouterID endpoint; RouterID endpoint;
util::StatusObject util::StatusObject
ExtractStatus() const override ExtractStatus() const
{ {
auto now = llarp::time_now_ms(); auto now = llarp::time_now_ms();
util::StatusObject obj{{"txid", txid}, util::StatusObject obj{{"txid", txid},

@ -15,7 +15,7 @@ namespace llarp
{ {
namespace service namespace service
{ {
struct Tag : public llarp::AlignedBuffer< 16 >, public util::IStateful struct Tag : public llarp::AlignedBuffer< 16 >
{ {
Tag() : llarp::AlignedBuffer< SIZE >() Tag() : llarp::AlignedBuffer< SIZE >()
{ {
@ -54,7 +54,7 @@ namespace llarp
} }
util::StatusObject util::StatusObject
ExtractStatus() const override ExtractStatus() const
{ {
return util::StatusObject{{"name", ToString()}}; return util::StatusObject{{"name", ToString()}};
} }

@ -45,16 +45,6 @@ namespace llarp
friend struct StatusVisitor; friend struct StatusVisitor;
nlohmann::json Impl; nlohmann::json Impl;
}; };
/// an entity that has a status that can be extracted
struct IStateful
{
virtual ~IStateful(){};
virtual StatusObject
ExtractStatus() const = 0;
};
} // namespace util } // namespace util
} // namespace llarp } // namespace llarp

Loading…
Cancel
Save