diff options
| author | 2014-01-23 19:17:22 -0500 | |
|---|---|---|
| committer | 2014-02-04 22:39:12 +0100 | |
| commit | 3752b3f59d5216d7dc6221a361efc76b9ad2273d (patch) | |
| tree | 540ec25c9c643f1739875aa0add1f8a87a334e3c /src/socketengines/socketengine_select.cpp | |
| parent | Change type of SocketEngine::CurrentSetSize to size_t from int (diff) | |
New socketengine stuff:
Use vectors that grow as necessary instead of mass allocating everything at once
Rework poll engine logic to make sense
Diffstat (limited to 'src/socketengines/socketengine_select.cpp')
| -rw-r--r-- | src/socketengines/socketengine_select.cpp | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/src/socketengines/socketengine_select.cpp b/src/socketengines/socketengine_select.cpp index f995b5472..39cfb7789 100644 --- a/src/socketengines/socketengine_select.cpp +++ b/src/socketengines/socketengine_select.cpp @@ -1,6 +1,7 @@ /* * InspIRCd -- Internet Relay Chat Daemon * + * Copyright (C) 2014 Adam <Adam@anope.org> * Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org> * Copyright (C) 2007-2008 Craig Edwards <craigedwards@brainbox.cc> * @@ -36,9 +37,6 @@ public: /** Create a new SelectEngine */ SelectEngine(); - /** Delete a SelectEngine - */ - virtual ~SelectEngine(); virtual bool AddFd(EventHandler* eh, int event_mask); virtual void DelFd(EventHandler* eh); void OnSetEvent(EventHandler* eh, int, int); @@ -51,31 +49,21 @@ SelectEngine::SelectEngine() MAX_DESCRIPTORS = FD_SETSIZE; CurrentSetSize = 0; - ref = new EventHandler* [GetMaxFds()]; - memset(ref, 0, GetMaxFds() * sizeof(EventHandler*)); - FD_ZERO(&ReadSet); FD_ZERO(&WriteSet); FD_ZERO(&ErrSet); MaxFD = 0; } -SelectEngine::~SelectEngine() -{ - delete[] ref; -} - bool SelectEngine::AddFd(EventHandler* eh, int event_mask) { int fd = eh->GetFd(); if ((fd < 0) || (fd > GetMaxFds() - 1)) return false; - if (ref[fd]) + if (!SocketEngine::AddFd(eh)) return false; - ref[fd] = eh; - SocketEngine::SetEventMask(eh, event_mask); OnSetEvent(eh, 0, event_mask); FD_SET(fd, &ErrSet); @@ -96,7 +84,7 @@ void SelectEngine::DelFd(EventHandler* eh) return; CurrentSetSize--; - ref[fd] = NULL; + SocketEngine::DelFd(eh); FD_CLR(fd, &ReadSet); FD_CLR(fd, &WriteSet); @@ -149,7 +137,7 @@ int SelectEngine::DispatchEvents() { --j; - EventHandler* ev = ref[i]; + EventHandler* ev = GetRef(i); if (!ev) continue; @@ -171,7 +159,7 @@ int SelectEngine::DispatchEvents() ReadEvents++; SetEventMask(ev, ev->GetEventMask() & ~FD_READ_WILL_BLOCK); ev->HandleEvent(EVENT_READ); - if (ev != ref[i]) + if (ev != GetRef(i)) continue; } if (has_write) |
