mirror of
https://github.com/znc/znc.git
synced 2026-05-08 22:34:45 +02:00
Use a set instead of a vector in CModule
CModule has two vectors: A list of timers and a list of sockets for this module. Since one shouldn't be able to add items multiple times it makes sense to use a set here instead. git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1643 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
+49
-31
@@ -235,12 +235,12 @@ CModule::CModule(ModHandle pDLL, const CString& sModName, const CString& sDataDi
|
||||
}
|
||||
|
||||
CModule::~CModule() {
|
||||
while (m_vTimers.size()) {
|
||||
RemTimer(m_vTimers[0]->GetName());
|
||||
while (!m_sTimers.empty()) {
|
||||
RemTimer(*m_sTimers.begin());
|
||||
}
|
||||
|
||||
while (m_vSockets.size()) {
|
||||
RemSocket(m_vSockets[0]);
|
||||
while (!m_sSockets.empty()) {
|
||||
RemSocket(*m_sSockets.begin());
|
||||
}
|
||||
|
||||
SaveRegistry();
|
||||
@@ -310,8 +310,11 @@ bool CModule::AddTimer(CTimer* pTimer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!m_sTimers.insert(pTimer).second)
|
||||
// Was already added
|
||||
return true;
|
||||
|
||||
m_pManager->AddCron(pTimer);
|
||||
m_vTimers.push_back(pTimer);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -322,12 +325,19 @@ bool CModule::AddTimer(FPTimer_t pFBCallback, const CString& sLabel, u_int uInte
|
||||
return AddTimer(pTimer);
|
||||
}
|
||||
|
||||
bool CModule::RemTimer(CTimer* pTimer) {
|
||||
if (m_sTimers.erase(pTimer) == 0)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CModule::RemTimer(const CString& sLabel) {
|
||||
for (unsigned int a = 0; a < m_vTimers.size(); a++) {
|
||||
CTimer* pTimer = m_vTimers[a];
|
||||
set<CTimer*>::iterator it;
|
||||
for (it = m_sTimers.begin(); it != m_sTimers.end(); ++it) {
|
||||
CTimer* pTimer = *it;
|
||||
|
||||
if (pTimer->GetName().Equals(sLabel)) {
|
||||
m_vTimers.erase(m_vTimers.begin() +a);
|
||||
m_sTimers.erase(it);
|
||||
m_pManager->DelCronByAddr(pTimer);
|
||||
return true;
|
||||
}
|
||||
@@ -337,9 +347,10 @@ bool CModule::RemTimer(const CString& sLabel) {
|
||||
}
|
||||
|
||||
bool CModule::UnlinkTimer(CTimer* pTimer) {
|
||||
for (unsigned int a = 0; a < m_vTimers.size(); a++) {
|
||||
if (pTimer == m_vTimers[a]) {
|
||||
m_vTimers.erase(m_vTimers.begin() +a);
|
||||
set<CTimer*>::iterator it;
|
||||
for (it = m_sTimers.begin(); it != m_sTimers.end(); ++it) {
|
||||
if (pTimer == *it) {
|
||||
m_sTimers.erase(it);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -348,8 +359,9 @@ bool CModule::UnlinkTimer(CTimer* pTimer) {
|
||||
}
|
||||
|
||||
CTimer* CModule::FindTimer(const CString& sLabel) {
|
||||
for (unsigned int a = 0; a < m_vTimers.size(); a++) {
|
||||
CTimer* pTimer = m_vTimers[a];
|
||||
set<CTimer*>::iterator it;
|
||||
for (it = m_sTimers.begin(); it != m_sTimers.end(); ++it) {
|
||||
CTimer* pTimer = *it;
|
||||
if (pTimer->GetName().Equals(sLabel)) {
|
||||
return pTimer;
|
||||
}
|
||||
@@ -359,7 +371,7 @@ CTimer* CModule::FindTimer(const CString& sLabel) {
|
||||
}
|
||||
|
||||
void CModule::ListTimers() {
|
||||
if (!m_vTimers.size()) {
|
||||
if (m_sTimers.empty()) {
|
||||
PutModule("You have no timers running.");
|
||||
return;
|
||||
}
|
||||
@@ -370,8 +382,9 @@ void CModule::ListTimers() {
|
||||
Table.AddColumn("Cycles");
|
||||
Table.AddColumn("Description");
|
||||
|
||||
for (unsigned int a = 0; a < m_vTimers.size(); a++) {
|
||||
CTimer* pTimer = (CTimer*) m_vTimers[a];
|
||||
set<CTimer*>::iterator it;
|
||||
for (it = m_sTimers.begin(); it != m_sTimers.end(); ++it) {
|
||||
CTimer* pTimer = *it;
|
||||
unsigned int uCycles = pTimer->GetCyclesLeft();
|
||||
|
||||
Table.AddRow();
|
||||
@@ -389,14 +402,15 @@ bool CModule::AddSocket(CSocket* pSocket) {
|
||||
return false;
|
||||
}
|
||||
|
||||
m_vSockets.push_back(pSocket);
|
||||
m_sSockets.insert(pSocket);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CModule::RemSocket(CSocket* pSocket) {
|
||||
for (unsigned int a = 0; a < m_vSockets.size(); a++) {
|
||||
if (m_vSockets[a] == pSocket) {
|
||||
m_vSockets.erase(m_vSockets.begin() +a);
|
||||
set<CSocket*>::iterator it;
|
||||
for (it = m_sSockets.begin(); it != m_sSockets.end(); ++it) {
|
||||
if (*it == pSocket) {
|
||||
m_sSockets.erase(it);
|
||||
m_pManager->DelSockByAddr(pSocket);
|
||||
return true;
|
||||
}
|
||||
@@ -406,11 +420,12 @@ bool CModule::RemSocket(CSocket* pSocket) {
|
||||
}
|
||||
|
||||
bool CModule::RemSocket(const CString& sSockName) {
|
||||
for (unsigned int a = 0; a < m_vSockets.size(); a++) {
|
||||
CSocket* pSocket = m_vSockets[a];
|
||||
set<CSocket*>::iterator it;
|
||||
for (it = m_sSockets.begin(); it != m_sSockets.end(); ++it) {
|
||||
CSocket* pSocket = *it;
|
||||
|
||||
if (pSocket->GetSockName().Equals(sSockName)) {
|
||||
m_vSockets.erase(m_vSockets.begin() +a);
|
||||
m_sSockets.erase(it);
|
||||
m_pManager->DelSockByAddr(pSocket);
|
||||
return true;
|
||||
}
|
||||
@@ -420,9 +435,10 @@ bool CModule::RemSocket(const CString& sSockName) {
|
||||
}
|
||||
|
||||
bool CModule::UnlinkSocket(CSocket* pSocket) {
|
||||
for (unsigned int a = 0; a < m_vSockets.size(); a++) {
|
||||
if (pSocket == m_vSockets[a]) {
|
||||
m_vSockets.erase(m_vSockets.begin() +a);
|
||||
set<CSocket*>::iterator it;
|
||||
for (it = m_sSockets.begin(); it != m_sSockets.end(); ++it) {
|
||||
if (pSocket == *it) {
|
||||
m_sSockets.erase(it);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -431,8 +447,9 @@ bool CModule::UnlinkSocket(CSocket* pSocket) {
|
||||
}
|
||||
|
||||
CSocket* CModule::FindSocket(const CString& sSockName) {
|
||||
for (unsigned int a = 0; a < m_vSockets.size(); a++) {
|
||||
CSocket* pSocket = m_vSockets[a];
|
||||
set<CSocket*>::iterator it;
|
||||
for (it = m_sSockets.begin(); it != m_sSockets.end(); ++it) {
|
||||
CSocket* pSocket = *it;
|
||||
if (pSocket->GetSockName().Equals(sSockName)) {
|
||||
return pSocket;
|
||||
}
|
||||
@@ -442,7 +459,7 @@ CSocket* CModule::FindSocket(const CString& sSockName) {
|
||||
}
|
||||
|
||||
void CModule::ListSockets() {
|
||||
if (!m_vSockets.size()) {
|
||||
if (m_sSockets.empty()) {
|
||||
PutModule("You have no open sockets.");
|
||||
return;
|
||||
}
|
||||
@@ -455,8 +472,9 @@ void CModule::ListSockets() {
|
||||
Table.AddColumn("RemoteIP");
|
||||
Table.AddColumn("RemotePort");
|
||||
|
||||
for (unsigned int a = 0; a < m_vSockets.size(); a++) {
|
||||
CSocket* pSocket = (CSocket*) m_vSockets[a];
|
||||
set<CSocket*>::iterator it;
|
||||
for (it = m_sSockets.begin(); it != m_sSockets.end(); ++it) {
|
||||
CSocket* pSocket = *it;
|
||||
|
||||
Table.AddRow();
|
||||
Table.SetCell("Name", pSocket->GetSockName());
|
||||
|
||||
Reference in New Issue
Block a user