From e381b06561228aaea752deda20a62c6dc99a560e Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 18 Aug 2006 01:08:14 +0000 Subject: EventHandler class, an abstraction for raw i/o git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4941 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/userprocess.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'src/userprocess.cpp') diff --git a/src/userprocess.cpp b/src/userprocess.cpp index 8c048c760..aa16bd90e 100644 --- a/src/userprocess.cpp +++ b/src/userprocess.cpp @@ -55,11 +55,9 @@ void InspIRCd::ProcessUser(userrec* cu) { int result = EAGAIN; - if (cu->fd == FD_MAGIC_NUMBER) + if (cu->GetFd() == FD_MAGIC_NUMBER) return; - this->Log(DEBUG,"Processing user with fd %d",cu->fd); - if (this->Config->GetIOHook(cu->GetPort())) { int result2 = 0; @@ -67,7 +65,7 @@ void InspIRCd::ProcessUser(userrec* cu) try { - MOD_RESULT = this->Config->GetIOHook(cu->GetPort())->OnRawSocketRead(cu->fd,ReadBuffer,sizeof(ReadBuffer),result2); + MOD_RESULT = this->Config->GetIOHook(cu->GetPort())->OnRawSocketRead(cu->GetFd(),ReadBuffer,sizeof(ReadBuffer),result2); this->Log(DEBUG,"Data result returned by module: %d",MOD_RESULT); } catch (ModuleException& modexcept) @@ -115,7 +113,7 @@ void InspIRCd::ProcessUser(userrec* cu) ReadBuffer[result] = '\0'; current = cu; - currfd = current->fd; + currfd = current->GetFd(); // add the data to the users buffer if (result > 0) @@ -216,7 +214,7 @@ void InspIRCd::ProcessUser(userrec* cu) if (single_line.length() > 512) single_line.resize(512); - userrec* old_comp = this->fd_ref_table[currfd]; + EventHandler* old_comp = this->SE->GetRef(currfd); this->Parser->ProcessBuffer(single_line,current); /* @@ -225,8 +223,8 @@ void InspIRCd::ProcessUser(userrec* cu) * there used to be an ugly, slow loop here. Now we have a reference * table, life is much easier (and FASTER) */ - userrec* new_comp = this->fd_ref_table[currfd]; - if ((currfd < 0) || (!this->fd_ref_table[currfd]) || (old_comp != new_comp)) + EventHandler* new_comp = this->SE->GetRef(currfd); + if (old_comp != new_comp) { return; } @@ -270,11 +268,10 @@ void InspIRCd::DoSocketTimeouts(time_t TIME) { InspSocket* s = *a; int fd = s->GetFd(); - if ((s) && (fd >= 0) && (fd < MAX_DESCRIPTORS) && (this->socket_ref[fd] != NULL) && (s->Timeout(TIME))) + if ((s) && (fd >= 0) && (fd < MAX_DESCRIPTORS) && (this->SE->GetRef(fd) == s) && (s->Timeout(TIME))) { this->Log(DEBUG,"userprocess.cpp: Socket poll returned false, close and bail"); - this->socket_ref[fd] = NULL; - SE->DelFd(fd); + SE->DelFd(s); this->module_sockets.erase(a); s->Close(); DELETE(s); -- cgit v1.3.1-10-gc9f91