X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Ftreeserver.h;h=037edd1943599c8165fb409ec41990ff09e2b3d1;hb=2f35b78fbaadb8d9a6c47ffc198bd97f91af3306;hp=d7fbfdf53d070271db99fcb2650a3650dd89bd2e;hpb=4bb972550e79292c5571714103780d873f5e82aa;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/treeserver.h b/src/modules/m_spanningtree/treeserver.h index d7fbfdf53..037edd194 100644 --- a/src/modules/m_spanningtree/treeserver.h +++ b/src/modules/m_spanningtree/treeserver.h @@ -22,6 +22,7 @@ #pragma once #include "treesocket.h" +#include "pingtimer.h" /** Each server in the tree is represented by one class of * type TreeServer. A locally connected TreeServer can @@ -47,10 +48,9 @@ class TreeServer : public Server /** Full version string including patch version and other info */ std::string fullversion; + std::string rawversion; TreeSocket* Socket; /* Socket used to communicate with this server */ - time_t NextPing; /* After this time, the server should be PINGed*/ - bool LastPingWasGood; /* True if the server responded to the last PING with a PONG */ std::string sid; /* Server ID */ /** Counter counting how many servers are bursting in front of this server, including @@ -64,6 +64,10 @@ class TreeServer : public Server */ bool isdead; + /** Timer handling PINGing the server and killing it on timeout + */ + PingTimer pingtimer; + /** This method is used to add this TreeServer to the * hash maps. It is only called by the constructors. */ @@ -82,8 +86,6 @@ class TreeServer : public Server FakeUser* const ServerUser; /* User representing this server */ const time_t age; - bool Warned; /* True if we've warned opers about high latency on this server */ - unsigned int UserCount; /* How many users are on this server? [note: doesn't care about +i] */ unsigned int OperCount; /* How many opers are on this server? */ @@ -143,17 +145,9 @@ class TreeServer : public Server */ const std::string& GetFullVersion() const { return fullversion; } - /** Set time we are next due to ping this server - */ - void SetNextPingTime(time_t t); - - /** Get the time we are next due to ping this server + /** Get the raw version string of this server */ - time_t NextPingTime(); - - /** Last ping time in milliseconds, used to calculate round trip time - */ - unsigned long LastPingMsec; + const std::string& GetRawVersion() const { return rawversion; } /** Round trip time of last ping */ @@ -161,20 +155,12 @@ class TreeServer : public Server /** When we recieved BURST from this server, used to calculate total burst time at ENDBURST. */ - unsigned long StartBurst; + uint64_t StartBurst; /** True if this server is hidden */ bool Hidden; - /** True if the server answered their last ping - */ - bool AnsweredLastPing(); - - /** Set the server as responding to its last ping - */ - void SetPingFlag(); - /** Get the TreeSocket pointer for local servers. * For remote servers, this returns NULL. */ @@ -194,6 +180,10 @@ class TreeServer : public Server */ void SetFullVersion(const std::string& verstr) { fullversion = verstr; } + /** Set the raw version string + */ + void SetRawVersion(const std::string& verstr) { rawversion = verstr; } + /** Sets the description of this server. Called when the description of a remote server changes * and we are notified about it. * @param descstr The description to set @@ -204,14 +194,6 @@ class TreeServer : public Server */ const ChildServers& GetChildren() const { return Children; } - /** Add a child server - */ - void AddChild(TreeServer* Child); - - /** Delete a child server, return false if it didn't exist. - */ - bool DelChild(TreeServer* Child); - /** Get server ID */ const std::string& GetID() const { return sid; } @@ -240,9 +222,13 @@ class TreeServer : public Server /** Set the bursting state of the server * @param startms Time the server started bursting, if 0 or omitted, use current time */ - void BeginBurst(unsigned long startms = 0); + void BeginBurst(uint64_t startms = 0); + + /** Register a PONG from the server + */ + void OnPong() { pingtimer.OnPong(); } - CullResult cull(); + CullResult cull() CXX11_OVERRIDE; /** Destructor, deletes ServerUser unless IsRoot() */