mirror of
https://github.com/znc/znc.git
synced 2026-03-28 17:42:41 +01:00
Handle clients in CModules the same way users are
This should remove some additional complexity, but I doubt one can benchmark these savings... BTW: Here is what I found out on how this works: The user module manager (CModules) always has m_pUser set to NULL which means that it never touches its module's user pointer. That way, the modules always have the correct pointer. For global modules, m_pUser is set on some calls. This pointer is then passed on to the modules and reset afterwards. git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1182 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
11
Modules.cpp
11
Modules.cpp
@@ -22,6 +22,7 @@
|
||||
for (unsigned int a = 0; a < size(); a++) { \
|
||||
try { \
|
||||
type* pMod = (type *) (*this)[a]; \
|
||||
pMod->SetClient(m_pClient); \
|
||||
if (m_pUser) { \
|
||||
pMod->SetUser(m_pUser); \
|
||||
pMod->func; \
|
||||
@@ -29,6 +30,7 @@
|
||||
} else { \
|
||||
pMod->func; \
|
||||
} \
|
||||
pMod->SetClient(NULL); \
|
||||
} catch (CModule::EModException e) { \
|
||||
if (e == CModule::UNLOAD) { \
|
||||
UnloadModule((*this)[a]->GetModName()); \
|
||||
@@ -45,6 +47,7 @@
|
||||
try { \
|
||||
type* pMod = (type*) (*this)[a]; \
|
||||
CModule::EModRet e = CModule::CONTINUE; \
|
||||
pMod->SetClient(m_pClient); \
|
||||
if (m_pUser) { \
|
||||
pMod->SetUser(m_pUser); \
|
||||
e = pMod->func; \
|
||||
@@ -52,6 +55,7 @@
|
||||
} else { \
|
||||
e = pMod->func; \
|
||||
} \
|
||||
pMod->SetClient(NULL); \
|
||||
if (e == CModule::HALTMODS) { \
|
||||
break; \
|
||||
} else if (e == CModule::HALTCORE) { \
|
||||
@@ -541,6 +545,7 @@ void CGlobalModule::OnFailedLogin(const CString& sUsername, const CString& sRemo
|
||||
|
||||
CModules::CModules() {
|
||||
m_pUser = NULL;
|
||||
m_pClient = NULL;
|
||||
}
|
||||
|
||||
CModules::~CModules() {
|
||||
@@ -555,12 +560,6 @@ void CModules::UnloadAll() {
|
||||
}
|
||||
}
|
||||
|
||||
void CModules::SetClient(CClient* pClient) {
|
||||
for (unsigned int a = 0; a < size(); a++) {
|
||||
(*this)[a]->SetClient(pClient);
|
||||
}
|
||||
}
|
||||
|
||||
bool CModules::OnBoot() {
|
||||
for (unsigned int a = 0; a < size(); a++) {
|
||||
if (!(*this)[a]->OnBoot()) {
|
||||
|
||||
Reference in New Issue
Block a user