#include "utils.h"
#include "treeserver.h"
-/* $ModDep: m_spanningtree/utils.h m_spanningtree/treeserver.h */
-
/** We use this constructor only to create the 'root' item, Utils->TreeRoot, which
* represents our own server. Therefore, it has no route, no parent, and
* no socket associated with it. Its version string is our own local version.
*/
-TreeServer::TreeServer(SpanningTreeUtilities* Util)
+TreeServer::TreeServer()
: Parent(NULL), Route(NULL), ServerName(ServerInstance->Config->ServerName), ServerDesc(ServerInstance->Config->ServerDesc)
- , VersionString(ServerInstance->GetVersionString()), Socket(NULL), Utils(Util), sid(ServerInstance->Config->GetSID()), ServerUser(ServerInstance->FakeClient)
+ , VersionString(ServerInstance->GetVersionString()), Socket(NULL), sid(ServerInstance->Config->GetSID()), ServerUser(ServerInstance->FakeClient)
, age(ServerInstance->Time()), Warned(false), bursting(false), UserCount(0), OperCount(0), rtt(0), StartBurst(0), Hidden(false)
{
AddHashEntry();
* This constructor initializes the server's Route and Parent, and sets up
* its ping counters so that it will be pinged one minute from now.
*/
-TreeServer::TreeServer(SpanningTreeUtilities* Util, const std::string& Name, const std::string& Desc, const std::string& id, TreeServer* Above, TreeSocket* Sock, bool Hide)
- : Parent(Above), ServerName(Name), ServerDesc(Desc), Socket(Sock), Utils(Util), sid(id), ServerUser(new FakeUser(id, Name))
+TreeServer::TreeServer(const std::string& Name, const std::string& Desc, const std::string& id, TreeServer* Above, TreeSocket* Sock, bool Hide)
+ : Parent(Above), ServerName(Name), ServerDesc(Desc), Socket(Sock), sid(id), ServerUser(new FakeUser(id, Name))
, age(ServerInstance->Time()), Warned(false), bursting(true), UserCount(0), OperCount(0), rtt(0), Hidden(Hide)
{
SetNextPingTime(ServerInstance->Time() + Utils->PingFreq);
long ts = ServerInstance->Time() * 1000 + (ServerInstance->Time_ns() / 1000000);
this->StartBurst = ts;
- ServerInstance->Logs->Log("m_spanningtree", LOG_DEBUG, "Server %s started bursting at time %lu", sid.c_str(), ts);
+ ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Server %s started bursting at time %lu", sid.c_str(), ts);
/* find the 'route' for this server (e.g. the one directly connected
* to the local server, which we can use to reach it)
User* a = (User*)*n;
if (!IS_LOCAL(a))
{
- if (this->Utils->quiet_bursts)
+ if (Utils->quiet_bursts)
a->quietquit = true;
if (ServerInstance->Config->HideSplits)
* This is used during netsplits to automatically tidy up the
* server tree. It is slow, we don't use it for much else.
*/
-bool TreeServer::Tidy()
+void TreeServer::Tidy()
{
while (1)
{
std::vector<TreeServer*>::iterator a = Children.begin();
if (a == Children.end())
- return true;
+ return;
TreeServer* s = *a;
s->Tidy();
s->cull();
CullResult TreeServer::cull()
{
- if (ServerUser != ServerInstance->FakeClient)
+ if (!IsRoot())
ServerUser->cull();
return classbase::cull();
}
TreeServer::~TreeServer()
{
/* We'd better tidy up after ourselves, eh? */
- if (ServerUser != ServerInstance->FakeClient)
+ if (!IsRoot())
delete ServerUser;
Utils->sidlist.erase(sid);