summaryrefslogtreecommitdiff
path: root/src/PortEventPoll.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-03-25 00:38:57 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-03-25 00:38:57 +0900
commit2b3469dad90f0756cf7280ea6d112503257b51d4 (patch)
tree50b8a5566498c616c720550b468807d79695ebfe /src/PortEventPoll.cc
parentae393329f7adf1c3009219ba703fc7fa2ca98fcd (diff)
Use std::set for socketEntries_ and nameResolverEntries_ in PortEventPoll
Diffstat (limited to 'src/PortEventPoll.cc')
-rw-r--r--src/PortEventPoll.cc31
1 files changed, 11 insertions, 20 deletions
diff --git a/src/PortEventPoll.cc b/src/PortEventPoll.cc
index b95fc44b..f0df0e1e 100644
--- a/src/PortEventPoll.cc
+++ b/src/PortEventPoll.cc
@@ -139,9 +139,8 @@ void PortEventPoll::poll(const struct timeval& tv)
// own timeout and ares may create new sockets or closes socket in
// their API. So we call ares_process_fd for all ares_channel and
// re-register their sockets.
- for(std::deque<SharedHandle<KAsyncNameResolverEntry> >::iterator i =
- nameResolverEntries_.begin(), eoi = nameResolverEntries_.end();
- i != eoi; ++i) {
+ for(KAsyncNameResolverEntrySet::iterator i = nameResolverEntries_.begin(),
+ eoi = nameResolverEntries_.end(); i != eoi; ++i) {
(*i)->processTimeout();
(*i)->removeSocketEvents(this);
(*i)->addSocketEvents(this);
@@ -176,9 +175,7 @@ bool PortEventPoll::addEvents(sock_t socket,
const PortEventPoll::KEvent& event)
{
SharedHandle<KSocketEntry> socketEntry(new KSocketEntry(socket));
- std::deque<SharedHandle<KSocketEntry> >::iterator i =
- std::lower_bound(socketEntries_.begin(), socketEntries_.end(), socketEntry,
- DerefLess<SharedHandle<KSocketEntry> >());
+ KSocketEntrySet::iterator i = socketEntries_.lower_bound(socketEntry);
int r = 0;
int errNum = 0;
if(i != socketEntries_.end() && *(*i) == *socketEntry) {
@@ -228,10 +225,11 @@ bool PortEventPoll::deleteEvents(sock_t socket,
const PortEventPoll::KEvent& event)
{
SharedHandle<KSocketEntry> socketEntry(new KSocketEntry(socket));
- std::deque<SharedHandle<KSocketEntry> >::iterator i =
- std::lower_bound(socketEntries_.begin(), socketEntries_.end(), socketEntry,
- DerefLess<SharedHandle<KSocketEntry> >());
- if(i != socketEntries_.end() && *(*i) == *socketEntry) {
+ KSocketEntrySet::iterator i = socketEntries_.find(socketEntry);
+ if(i == socketEntries_.end()) {
+ A2_LOG_DEBUG(fmt("Socket %d is not found in SocketEntries.", socket));
+ return false;
+ } else {
event.removeSelf(*i);
int r = 0;
int errNum = 0;
@@ -252,9 +250,6 @@ bool PortEventPoll::deleteEvents(sock_t socket,
} else {
return true;
}
- } else {
- A2_LOG_DEBUG(fmt("Socket %d is not found in SocketEntries.", socket));
- return false;
}
}
@@ -279,11 +274,9 @@ bool PortEventPoll::addNameResolver
{
SharedHandle<KAsyncNameResolverEntry> entry
(new KAsyncNameResolverEntry(resolver, command));
- std::deque<SharedHandle<KAsyncNameResolverEntry> >::iterator itr =
- std::find_if(nameResolverEntries_.begin(), nameResolverEntries_.end(),
- derefEqual(entry));
+ KAsyncNameResolverEntrySet::iterator itr = nameResolverEntries_.find(entry);
if(itr == nameResolverEntries_.end()) {
- nameResolverEntries_.push_back(entry);
+ nameResolverEntries_.insert(entry);
entry->addSocketEvents(this);
return true;
} else {
@@ -296,9 +289,7 @@ bool PortEventPoll::deleteNameResolver
{
SharedHandle<KAsyncNameResolverEntry> entry
(new KAsyncNameResolverEntry(resolver, command));
- std::deque<SharedHandle<KAsyncNameResolverEntry> >::iterator itr =
- std::find_if(nameResolverEntries_.begin(), nameResolverEntries_.end(),
- derefEqual(entry));
+ KAsyncNameResolverEntrySet::iterator itr = nameResolverEntries_.find(entry);
if(itr == nameResolverEntries_.end()) {
return false;
} else {