summaryrefslogtreecommitdiff
path: root/src/SelectEventPoll.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-11-11 07:33:43 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-11-11 07:33:43 +0000
commitbc98e39fe5ed30c03ba3af36f46f74e10f03e635 (patch)
tree15b13a4dd63c0f5a3892c80aba7d0a4d72da65f4 /src/SelectEventPoll.cc
parentbcf4593bda20504f026e359413f226519cbb8d37 (diff)
2010-11-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
To match the behavior of friend operator functions in SharedHandle.h to std::tr1::shared_ptr, we intentionally broke these functions and modified code so that our code does not depend on old behavior. * src/AbstractCommand.cc * src/DHTAbstractNodeLookupTask.h * src/DHTBucket.cc * src/DHTMessageReceiver.cc * src/DHTNodeLookupEntry.cc * src/DHTRoutingTable.cc * src/DefaultBtRequestFactory.cc * src/DefaultPeerStorage.cc * src/DefaultPieceStorage.cc * src/DownloadContext.cc * src/EpollEventPoll.cc * src/Event.h * src/HttpConnection.cc * src/KqueueEventPoll.cc * src/MultiDiskAdaptor.cc * src/PeerAbstractCommand.cc * src/PieceStatMan.cc * src/PollEventPoll.cc * src/PortEventPoll.cc * src/SegmentMan.cc * src/SelectEventPoll.cc * src/SelectEventPoll.h * src/ServerStatMan.cc * src/SharedHandle.h * src/UnknownLengthPieceStorage.cc * src/a2functional.h * src/option_processing.cc * src/version_usage.cc * test/BNodeTest.cc * test/DHTAnnouncePeerMessageTest.cc * test/DHTBucketTest.cc * test/DHTFindNodeMessageTest.cc * test/DHTGetPeersMessageTest.cc * test/DHTIDCloserTest.cc * test/DHTMessageFactoryImplTest.cc * test/DHTPingMessageTest.cc * test/DefaultBtRequestFactoryTest.cc * test/DefaultPeerStorageTest.cc * test/SequentialPickerTest.cc * test/SingletonHolderTest.cc
Diffstat (limited to 'src/SelectEventPoll.cc')
-rw-r--r--src/SelectEventPoll.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/SelectEventPoll.cc b/src/SelectEventPoll.cc
index 473091e3..4297b55e 100644
--- a/src/SelectEventPoll.cc
+++ b/src/SelectEventPoll.cc
@@ -44,6 +44,7 @@
#include "Command.h"
#include "LogFactory.h"
#include "Logger.h"
+#include "a2functional.h"
namespace aria2 {
@@ -278,8 +279,9 @@ bool SelectEventPoll::addEvents(sock_t socket, Command* command,
{
SharedHandle<SocketEntry> socketEntry(new SocketEntry(socket));
std::deque<SharedHandle<SocketEntry> >::iterator i =
- std::lower_bound(socketEntries_.begin(), socketEntries_.end(), socketEntry);
- if(i != socketEntries_.end() && (*i) == socketEntry) {
+ std::lower_bound(socketEntries_.begin(), socketEntries_.end(), socketEntry,
+ DerefLess<SharedHandle<SocketEntry> >());
+ if(i != socketEntries_.end() && *(*i) == *socketEntry) {
(*i)->addCommandEvent(command, events);
} else {
socketEntries_.insert(i, socketEntry);
@@ -294,8 +296,9 @@ bool SelectEventPoll::deleteEvents(sock_t socket, Command* command,
{
SharedHandle<SocketEntry> socketEntry(new SocketEntry(socket));
std::deque<SharedHandle<SocketEntry> >::iterator i =
- std::lower_bound(socketEntries_.begin(), socketEntries_.end(), socketEntry);
- if(i != socketEntries_.end() && (*i) == socketEntry) {
+ std::lower_bound(socketEntries_.begin(), socketEntries_.end(), socketEntry,
+ DerefLess<SharedHandle<SocketEntry> >());
+ if(i != socketEntries_.end() && *(*i) == *socketEntry) {
(*i)->removeCommandEvent(command, events);
if((*i)->eventEmpty()) {
socketEntries_.erase(i);
@@ -317,7 +320,8 @@ bool SelectEventPoll::addNameResolver
SharedHandle<AsyncNameResolverEntry> entry
(new AsyncNameResolverEntry(resolver, command));
std::deque<SharedHandle<AsyncNameResolverEntry> >::iterator itr =
- std::find(nameResolverEntries_.begin(), nameResolverEntries_.end(), entry);
+ std::find_if(nameResolverEntries_.begin(), nameResolverEntries_.end(),
+ derefEqual(entry));
if(itr == nameResolverEntries_.end()) {
nameResolverEntries_.push_back(entry);
return true;
@@ -332,7 +336,8 @@ bool SelectEventPoll::deleteNameResolver
SharedHandle<AsyncNameResolverEntry> entry
(new AsyncNameResolverEntry(resolver, command));
std::deque<SharedHandle<AsyncNameResolverEntry> >::iterator itr =
- std::find(nameResolverEntries_.begin(), nameResolverEntries_.end(), entry);
+ std::find_if(nameResolverEntries_.begin(), nameResolverEntries_.end(),
+ derefEqual(entry));
if(itr == nameResolverEntries_.end()) {
return false;
} else {