diff options
Diffstat (limited to 'src/Event.h')
| -rw-r--r-- | src/Event.h | 166 |
1 files changed, 77 insertions, 89 deletions
diff --git a/src/Event.h b/src/Event.h index 1d9d24ee..1cce3b98 100644 --- a/src/Event.h +++ b/src/Event.h @@ -45,13 +45,12 @@ #include "a2netcompat.h" #include "Command.h" #ifdef ENABLE_ASYNC_DNS -# include "AsyncNameResolver.h" +#include "AsyncNameResolver.h" #endif // ENABLE_ASYNC_DNS namespace aria2 { -template<typename SocketEntry> -class Event { +template <typename SocketEntry> class Event { public: virtual ~Event() {} @@ -64,61 +63,49 @@ public: virtual void removeSelf(SocketEntry* socketEntry) const = 0; }; -template<typename SocketEntry, typename EventPoll> +template <typename SocketEntry, typename EventPoll> class CommandEvent : public Event<SocketEntry> { private: Command* command_; int events_; -public: - CommandEvent(Command* command, int events): - command_(command), events_(events) {} - Command* getCommand() const +public: + CommandEvent(Command* command, int events) + : command_(command), events_(events) { - return command_; } - void addEvents(int events) - { - events_ |= events; - } + Command* getCommand() const { return command_; } - void removeEvents(int events) - { - events_ &= (~events); - } + void addEvents(int events) { events_ |= events; } - bool eventsEmpty() const - { - return events_ == 0; - } + void removeEvents(int events) { events_ &= (~events); } + + bool eventsEmpty() const { return events_ == 0; } bool operator==(const CommandEvent& commandEvent) const { return command_ == commandEvent.command_; } - virtual int getEvents() const - { - return events_; - } + virtual int getEvents() const { return events_; } virtual void processEvents(int events) { - if((events_&events) || - ((EventPoll::IEV_ERROR|EventPoll::IEV_HUP)&events)) { + if ((events_ & events) || + ((EventPoll::IEV_ERROR | EventPoll::IEV_HUP) & events)) { command_->setStatusActive(); } - if(EventPoll::IEV_READ&events) { + if (EventPoll::IEV_READ & events) { command_->readEventReceived(); } - if(EventPoll::IEV_WRITE&events) { + if (EventPoll::IEV_WRITE & events) { command_->writeEventReceived(); } - if(EventPoll::IEV_ERROR&events) { + if (EventPoll::IEV_ERROR & events) { command_->errorEventReceived(); } - if(EventPoll::IEV_HUP&events) { + if (EventPoll::IEV_HUP & events) { command_->hupEventReceived(); } } @@ -136,42 +123,44 @@ public: #ifdef ENABLE_ASYNC_DNS -template<typename SocketEntry, typename EventPoll> +template <typename SocketEntry, typename EventPoll> class ADNSEvent : public Event<SocketEntry> { private: std::shared_ptr<AsyncNameResolver> resolver_; Command* command_; sock_t socket_; int events_; + public: - ADNSEvent(const std::shared_ptr<AsyncNameResolver>& resolver, Command* command, - sock_t socket, int events): - resolver_(resolver), command_(command), socket_(socket), events_(events) {} + ADNSEvent(const std::shared_ptr<AsyncNameResolver>& resolver, + Command* command, sock_t socket, int events) + : resolver_(resolver), command_(command), socket_(socket), events_(events) + { + } bool operator==(const ADNSEvent& event) const { return *resolver_ == *event.resolver_; } - virtual int getEvents() const - { - return events_; - } + virtual int getEvents() const { return events_; } virtual void processEvents(int events) { ares_socket_t readfd; ares_socket_t writefd; - if(events&(EventPoll::IEV_READ|EventPoll::IEV_ERROR| - EventPoll::IEV_HUP)) { + if (events & + (EventPoll::IEV_READ | EventPoll::IEV_ERROR | EventPoll::IEV_HUP)) { readfd = socket_; - } else { + } + else { readfd = ARES_SOCKET_BAD; } - if(events&(EventPoll::IEV_WRITE|EventPoll::IEV_ERROR| - EventPoll::IEV_HUP)) { + if (events & + (EventPoll::IEV_WRITE | EventPoll::IEV_ERROR | EventPoll::IEV_HUP)) { writefd = socket_; - } else { + } + else { writefd = ARES_SOCKET_BAD; } resolver_->process(readfd, writefd); @@ -188,13 +177,13 @@ public: socketEntry->removeADNSEvent(*this); } }; -#else // !ENABLE_ASYNC_DNS -template<typename SocketEntry, typename EventPoll> -class ADNSEvent : public Event<SocketEntry> {}; +#else // !ENABLE_ASYNC_DNS +template <typename SocketEntry, typename EventPoll> +class ADNSEvent : public Event<SocketEntry> { +}; #endif // !ENABLE_ASYNC_DNS -template<typename CommandEvent, typename ADNSEvent> -class SocketEntry { +template <typename CommandEvent, typename ADNSEvent> class SocketEntry { protected: sock_t socket_; @@ -206,7 +195,7 @@ protected: #endif // ENABLE_ASYNC_DNS public: - SocketEntry(sock_t socket):socket_(socket) {} + SocketEntry(sock_t socket) : socket_(socket) {} SocketEntry(const SocketEntry&) = delete; SocketEntry(SocketEntry&&) = default; @@ -224,10 +213,11 @@ public: void addCommandEvent(const CommandEvent& cev) { typename std::deque<CommandEvent>::iterator i = - std::find(commandEvents_.begin(), commandEvents_.end(), cev); - if(i == commandEvents_.end()) { + std::find(commandEvents_.begin(), commandEvents_.end(), cev); + if (i == commandEvents_.end()) { commandEvents_.push_back(cev); - } else { + } + else { (*i).addEvents(cev.getEvents()); } } @@ -235,12 +225,13 @@ public: void removeCommandEvent(const CommandEvent& cev) { typename std::deque<CommandEvent>::iterator i = - std::find(commandEvents_.begin(), commandEvents_.end(), cev); - if(i == commandEvents_.end()) { + std::find(commandEvents_.begin(), commandEvents_.end(), cev); + if (i == commandEvents_.end()) { // not found - } else { + } + else { (*i).removeEvents(cev.getEvents()); - if((*i).eventsEmpty()) { + if ((*i).eventsEmpty()) { commandEvents_.erase(i); } } @@ -251,8 +242,8 @@ public: void addADNSEvent(const ADNSEvent& aev) { typename std::deque<ADNSEvent>::iterator i = - std::find(adnsEvents_.begin(), adnsEvents_.end(), aev); - if(i == adnsEvents_.end()) { + std::find(adnsEvents_.begin(), adnsEvents_.end(), aev); + if (i == adnsEvents_.end()) { adnsEvents_.push_back(aev); } } @@ -260,30 +251,25 @@ public: void removeADNSEvent(const ADNSEvent& aev) { typename std::deque<ADNSEvent>::iterator i = - std::find(adnsEvents_.begin(), adnsEvents_.end(), aev); - if(i == adnsEvents_.end()) { + std::find(adnsEvents_.begin(), adnsEvents_.end(), aev); + if (i == adnsEvents_.end()) { // not found - } else { + } + else { adnsEvents_.erase(i); } } #endif // ENABLE_ASYNC_DNS - sock_t getSocket() const - { - return socket_; - } + sock_t getSocket() const { return socket_; } - void setSocket(sock_t socket) - { - socket_ = socket; - } + void setSocket(sock_t socket) { socket_ = socket; } bool eventEmpty() const { #ifdef ENABLE_ASYNC_DNS return commandEvents_.empty() && adnsEvents_.empty(); -#else // !ENABLE_ASYNC_DNS +#else // !ENABLE_ASYNC_DNS return commandEvents_.empty(); #endif // !ENABLE_ASYNC_DNS) } @@ -302,8 +288,7 @@ public: #ifdef ENABLE_ASYNC_DNS -template<typename EventPoll> -class AsyncNameResolverEntry { +template <typename EventPoll> class AsyncNameResolverEntry { private: std::shared_ptr<AsyncNameResolver> nameResolver_; @@ -315,42 +300,45 @@ private: public: AsyncNameResolverEntry(std::shared_ptr<AsyncNameResolver> nameResolver, - Command* command): - nameResolver_(std::move(nameResolver)), command_(command), socketsSize_(0) {} + Command* command) + : nameResolver_(std::move(nameResolver)), + command_(command), + socketsSize_(0) + { + } AsyncNameResolverEntry(const AsyncNameResolverEntry&) = delete; AsyncNameResolverEntry(AsyncNameResolverEntry&&) = default; bool operator==(const AsyncNameResolverEntry& entry) { - return *nameResolver_ == *entry.nameResolver_ && - command_ == entry.command_; + return *nameResolver_ == *entry.nameResolver_ && command_ == entry.command_; } bool operator<(const AsyncNameResolverEntry& entry) { return nameResolver_.get() < entry.nameResolver_.get() || - (nameResolver_.get() == entry.nameResolver_.get() && - command_ < entry.command_); + (nameResolver_.get() == entry.nameResolver_.get() && + command_ < entry.command_); } void addSocketEvents(EventPoll* e) { socketsSize_ = 0; int mask = nameResolver_->getsock(sockets_); - if(mask == 0) { + if (mask == 0) { return; } size_t i; - for(i = 0; i < ARES_GETSOCK_MAXNUM; ++i) { + for (i = 0; i < ARES_GETSOCK_MAXNUM; ++i) { int events = 0; - if(ARES_GETSOCK_READABLE(mask, i)) { + if (ARES_GETSOCK_READABLE(mask, i)) { events |= EventPoll::IEV_READ; } - if(ARES_GETSOCK_WRITABLE(mask, i)) { + if (ARES_GETSOCK_WRITABLE(mask, i)) { events |= EventPoll::IEV_WRITE; } - if(events == 0) { + if (events == 0) { // assume no further sockets are returned. break; } @@ -361,7 +349,7 @@ public: void removeSocketEvents(EventPoll* e) { - for(size_t i = 0; i < socketsSize_; ++i) { + for (size_t i = 0; i < socketsSize_; ++i) { e->deleteEvents(sockets_[i], command_, nameResolver_); } } @@ -373,9 +361,9 @@ public: nameResolver_->process(ARES_SOCKET_BAD, ARES_SOCKET_BAD); } }; -#else // !ENABLE_ASYNC_DNS -template<typename EventPoll> -class AsyncNameResolverEntry {}; +#else // !ENABLE_ASYNC_DNS +template <typename EventPoll> class AsyncNameResolverEntry { +}; #endif // !ENABLE_ASYNC_DNS } // namespace aria2 |
