From ddb5d4a8cb021a560ed2dc97ab862ffcd53052e4 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 14 May 2009 16:00:55 +0000 Subject: [PATCH] 2009-05-15 Tatsuhiro Tsujikawa Added tellAll command. * src/XmlRpcMethodFactory.cc * src/XmlRpcMethodImpl.cc * src/XmlRpcMethodImpl.h --- ChangeLog | 7 +++++++ src/XmlRpcMethodFactory.cc | 2 ++ src/XmlRpcMethodImpl.cc | 33 +++++++++++++++++++++++++++++++++ src/XmlRpcMethodImpl.h | 5 +++++ 4 files changed, 47 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5489fce5..bb2b1a57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-05-15 Tatsuhiro Tsujikawa + + Added tellAll command. + * src/XmlRpcMethodFactory.cc + * src/XmlRpcMethodImpl.cc + * src/XmlRpcMethodImpl.h + 2009-05-15 Tatsuhiro Tsujikawa Use gatherProgress() in TellActiveXmlRpcMethod::process(). diff --git a/src/XmlRpcMethodFactory.cc b/src/XmlRpcMethodFactory.cc index ac9fa57b..f8cb80d6 100644 --- a/src/XmlRpcMethodFactory.cc +++ b/src/XmlRpcMethodFactory.cc @@ -54,6 +54,8 @@ XmlRpcMethodFactory::create(const std::string& methodName) return SharedHandle(new RemoveXmlRpcMethod()); } else if(methodName == "aria2.tellStatus") { return SharedHandle(new TellStatusXmlRpcMethod()); + } else if(methodName == "aria2.tellAll") { + return SharedHandle(new TellAllXmlRpcMethod()); } else if(methodName == "aria2.getUris") { return SharedHandle(new GetUrisXmlRpcMethod()); } else if(methodName == "aria2.getFiles") { diff --git a/src/XmlRpcMethodImpl.cc b/src/XmlRpcMethodImpl.cc index 8a1eea04..3fbcd447 100644 --- a/src/XmlRpcMethodImpl.cc +++ b/src/XmlRpcMethodImpl.cc @@ -447,6 +447,39 @@ BDE TellActiveXmlRpcMethod::process return list; } +BDE TellAllXmlRpcMethod::process +(const XmlRpcRequest& req, DownloadEngine* e) +{ + BDE list = BDE::list(); + const std::deque >& groups = + e->_requestGroupMan->getRequestGroups(); + for(std::deque >::const_iterator i = + groups.begin(); i != groups.end(); ++i) { + BDE entryDict = BDE::dict(); + entryDict["status"] = BDE("active"); + gatherProgress(entryDict, *i, e); + list << entryDict; + } + const std::deque >& waiting = + e->_requestGroupMan->getReservedGroups(); + for(std::deque >::const_iterator i = + waiting.begin(); i != waiting.end(); ++i) { + BDE entryDict = BDE::dict(); + entryDict["status"] = BDE("waiting"); + gatherProgress(entryDict, *i, e); + list << entryDict; + } + const std::deque >& stopped = + e->_requestGroupMan->getDownloadResults(); + for(std::deque >::const_iterator i = + stopped.begin(); i != stopped.end(); ++i) { + BDE entryDict = BDE::dict(); + gatherStoppedDownload(entryDict, *i); + list << entryDict; + } + return list; +} + BDE PurgeDownloadResultXmlRpcMethod::process (const XmlRpcRequest& req, DownloadEngine* e) { diff --git a/src/XmlRpcMethodImpl.h b/src/XmlRpcMethodImpl.h index 05d53dc0..bf7e4fa9 100644 --- a/src/XmlRpcMethodImpl.h +++ b/src/XmlRpcMethodImpl.h @@ -91,6 +91,11 @@ protected: virtual BDE process(const XmlRpcRequest& req, DownloadEngine* e); }; +class TellAllXmlRpcMethod:public XmlRpcMethod { +protected: + virtual BDE process(const XmlRpcRequest& req, DownloadEngine* e); +}; + class ChangeOptionXmlRpcMethod:public XmlRpcMethod { protected: virtual BDE process(const XmlRpcRequest& req, DownloadEngine* e);