diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2014-09-13 15:36:27 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2014-09-13 17:33:22 +0900 |
| commit | 596e5c616218c9681adf4eb45077608510e2876e (patch) | |
| tree | be2c7fb20b14f0c4dc533c82dbb5dad23529d693 /src/KqueueEventPoll.h | |
| parent | f55c16c7edeb319a82217a91a87a35cddfd606b0 (diff) | |
Refactor event poll classes so that we don't have to allocate memory on query
I left Port and libuv classes, since I don't have them compiled.
So they were updated minimally.
Diffstat (limited to 'src/KqueueEventPoll.h')
| -rw-r--r-- | src/KqueueEventPoll.h | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/KqueueEventPoll.h b/src/KqueueEventPoll.h index 9e0ea47e..a5fdcf47 100644 --- a/src/KqueueEventPoll.h +++ b/src/KqueueEventPoll.h @@ -41,7 +41,7 @@ #include <sys/event.h> #include <sys/time.h> -#include <set> +#include <map> #include "Event.h" #include "a2functional.h" @@ -67,6 +67,9 @@ private: public: KSocketEntry(sock_t socket); + KSocketEntry(const KSocketEntry&) = delete; + KSocketEntry(KSocketEntry&&) = default; + // eventlist should be at least size 2. This function returns the // number of filled struct kevent in eventlist. size_t getEvents(struct kevent* eventlist); @@ -75,13 +78,11 @@ private: friend int accumulateEvent(int events, const KEvent& event); private: - typedef std::set<std::shared_ptr<KSocketEntry>, - DerefLess<std::shared_ptr<KSocketEntry> > > KSocketEntrySet; + typedef std::map<sock_t, KSocketEntry> KSocketEntrySet; KSocketEntrySet socketEntries_; #ifdef ENABLE_ASYNC_DNS - typedef std::set<std::shared_ptr<KAsyncNameResolverEntry>, - DerefLess<std::shared_ptr<KAsyncNameResolverEntry> > > - KAsyncNameResolverEntrySet; + typedef std::map<std::pair<AsyncNameResolver*, Command*>, + KAsyncNameResolverEntry> KAsyncNameResolverEntrySet; KAsyncNameResolverEntrySet nameResolverEntries_; #endif // ENABLE_ASYNC_DNS @@ -89,7 +90,7 @@ private: size_t kqEventsSize_; - struct kevent* kqEvents_; + std::unique_ptr<struct kevent[]> kqEvents_; static const size_t KQUEUE_EVENTS_MAX = 1024; |
