diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-01-15 15:23:16 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-01-15 15:23:16 +0000 |
| commit | 1ab8ade5d1a6cbebcd574c48cfd9150058c5dc75 (patch) | |
| tree | 96e57d1de14db540ab92d51d0c3884ba5da54a07 /src/DownloadEngineFactory.cc | |
| parent | 5fbd9977842150c05a4e53ddcecb602f11a1d673 (diff) | |
2009-01-16 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added --event-poll option to select the method for polling
events.
The available methods are "select" and "epoll". "epoll" is
available on Linux only. The earlier release has the compile
option to choose from these methods.
* configure.ac
* src/RequestGroupMan.cc
* src/OptionHandlerFactory.cc
* src/EpollEventPoll.h
* src/StreamFileAllocationEntry.cc
* src/a2io.h
* src/SelectEventPoll.h
* src/option_processing.cc
* src/prefs.h
* src/EpollEventPoll.cc
* src/EventPoll.h
* src/SocketCore.h
* src/Makefile.am
* src/main.cc
* src/DownloadEngine.h
* src/SelectEventPoll.cc
* src/DownloadEngine.cc
* src/SocketCore.cc
* src/DownloadEngineFactory.cc
* src/Makefile.in
* src/prefs.cc
* src/usage_text.h
Diffstat (limited to 'src/DownloadEngineFactory.cc')
| -rw-r--r-- | src/DownloadEngineFactory.cc | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/DownloadEngineFactory.cc b/src/DownloadEngineFactory.cc index da72e7df..13f9ea1d 100644 --- a/src/DownloadEngineFactory.cc +++ b/src/DownloadEngineFactory.cc @@ -54,6 +54,12 @@ #include "TimedHaltCommand.h" #include "DownloadResult.h" #include "ServerStatMan.h" +#include "a2io.h" +#ifdef HAVE_EPOLL +# include "EpollEventPoll.h" +#endif // HAVE_EPOLL +#include "SelectEventPoll.h" +#include "DlAbortEx.h" namespace aria2 { @@ -79,7 +85,24 @@ DownloadEngineFactory::newDownloadEngine(Option* op, workingSet = requestGroups; } - DownloadEngineHandle e(new DownloadEngine()); + SharedHandle<EventPoll> eventPoll; +#ifdef HAVE_EPOLL + if(op->get(PREF_EVENT_POLL) == V_EPOLL) { + SharedHandle<EpollEventPoll> ep(new EpollEventPoll()); + if(ep->good()) { + eventPoll = ep; + } else { + throw DlAbortEx("Initializing EpollEventPoll failed." + " Try --event-poll=select"); + } + } else +#endif // HAVE_EPLL + if(op->get(PREF_EVENT_POLL) == V_SELECT) { + eventPoll.reset(new SelectEventPoll()); + } else { + abort(); + } + DownloadEngineHandle e(new DownloadEngine(eventPoll)); e->option = op; RequestGroupManHandle |
