diff options
| author | 2021-03-02 05:39:12 +0000 | |
|---|---|---|
| committer | 2021-03-02 05:56:56 +0000 | |
| commit | 4e488cb54d72fb4a1caa580f6756a6f4687beaf6 (patch) | |
| tree | ae74c5dc12685a23ede19a299753aed30c336960 /src/cull_list.cpp | |
| parent | Move aligned_storage to the utility directory and clean up. (diff) | |
Refactor classbase/CullResult into Cullable/Cullable::Result.
Diffstat (limited to 'src/cull_list.cpp')
| -rw-r--r-- | src/cull_list.cpp | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/src/cull_list.cpp b/src/cull_list.cpp deleted file mode 100644 index 0f9c24f15..000000000 --- a/src/cull_list.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * InspIRCd -- Internet Relay Chat Daemon - * - * Copyright (C) 2015 Attila Molnar <attilamolnar@hush.com> - * Copyright (C) 2013, 2020 Sadie Powell <sadie@witchery.services> - * Copyright (C) 2012 Robby <robby@chatbelgie.be> - * Copyright (C) 2011 jackmcbarn <jackmcbarn@inspircd.org> - * Copyright (C) 2009 Uli Schlachter <psychon@inspircd.org> - * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org> - * Copyright (C) 2007, 2010 Craig Edwards <brain@inspircd.org> - * Copyright (C) 2007 Dennis Friis <peavey@inspircd.org> - * - * This file is part of InspIRCd. InspIRCd is free software: you can - * redistribute it and/or modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation, version 2. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -#include "inspircd.h" -#ifdef INSPIRCD_ENABLE_RTTI -#include <typeinfo> -#endif - -void CullList::Apply() -{ - std::vector<LocalUser *> working; - while (!SQlist.empty()) - { - working.swap(SQlist); - for(std::vector<LocalUser *>::iterator a = working.begin(); a != working.end(); a++) - { - LocalUser *u = *a; - ServerInstance->SNO.WriteGlobalSno('a', "User %s SendQ exceeds connect class maximum of %lu", - u->nick.c_str(), u->GetClass()->GetSendqHardMax()); - ServerInstance->Users.QuitUser(u, "SendQ exceeded"); - } - working.clear(); - } - std::set<classbase*> gone; - std::vector<classbase*> queue; - queue.reserve(list.size() + 32); - for(unsigned int i=0; i < list.size(); i++) - { - classbase* c = list[i]; - if (gone.insert(c).second) - { -#ifdef INSPIRCD_ENABLE_RTTI - ServerInstance->Logs.Log("CULLLIST", LOG_DEBUG, "Deleting %s @%p", typeid(*c).name(), - (void*)c); -#else - ServerInstance->Logs.Log("CULLLIST", LOG_DEBUG, "Deleting @%p", (void*)c); -#endif - c->cull(); - queue.push_back(c); - } - else - { - ServerInstance->Logs.Log("CULLLIST", LOG_DEBUG, "WARNING: Object @%p culled twice!", - (void*)c); - } - } - list.clear(); - for(unsigned int i=0; i < queue.size(); i++) - { - classbase* c = queue[i]; - delete c; - } - if (!list.empty()) - { - ServerInstance->Logs.Log("CULLLIST", LOG_DEBUG, "WARNING: Objects added to cull list in a destructor"); - Apply(); - } -} - -void ActionList::Run() -{ - for(unsigned int i=0; i < list.size(); i++) - { - list[i]->Call(); - } - list.clear(); -} |
