diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-03-26 17:12:52 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-03-26 17:20:27 +0900 |
| commit | d64089632e82a2548752c7a6baaa68365a795a74 (patch) | |
| tree | 57fc7b85a8c1290975d58fa4761b04a7695bf7e3 /src/RpcMethodFactory.cc | |
| parent | c81b1321122e8509b55c94c0cbca0d8d6d319f0c (diff) | |
| parent | a7cd943a06b1a5ff4515b57060b84037f8d01f9f (diff) | |
Merge branch 'master' into random-webseeding
Diffstat (limited to 'src/RpcMethodFactory.cc')
| -rw-r--r-- | src/RpcMethodFactory.cc | 193 |
1 files changed, 141 insertions, 52 deletions
diff --git a/src/RpcMethodFactory.cc b/src/RpcMethodFactory.cc index 7cc919de..2b1ce98c 100644 --- a/src/RpcMethodFactory.cc +++ b/src/RpcMethodFactory.cc @@ -50,109 +50,198 @@ std::unique_ptr<RpcMethod> noSuchRpcMethod; } // namespace namespace { -std::unique_ptr<RpcMethod> -createMethod(const std::string& methodName) +std::vector<std::string> rpcMethodNames = { + "aria2.addUri", +#ifdef ENABLE_BITTORRENT + "aria2.addTorrent", "aria2.getPeers", +#endif // ENABLE_BITTORRENT +#ifdef ENABLE_METALINK + "aria2.addMetalink", +#endif // ENABLE_METALINK + "aria2.remove", "aria2.pause", "aria2.forcePause", "aria2.pauseAll", + "aria2.forcePauseAll", "aria2.unpause", "aria2.unpauseAll", + "aria2.forceRemove", "aria2.changePosition", "aria2.tellStatus", + "aria2.getUris", "aria2.getFiles", "aria2.getServers", "aria2.tellActive", + "aria2.tellWaiting", "aria2.tellStopped", "aria2.getOption", + "aria2.changeUri", "aria2.changeOption", "aria2.getGlobalOption", + "aria2.changeGlobalOption", "aria2.purgeDownloadResult", + "aria2.removeDownloadResult", "aria2.getVersion", "aria2.getSessionInfo", + "aria2.shutdown", "aria2.forceShutdown", "aria2.getGlobalStat", + "aria2.saveSession", "system.multicall", "system.listMethods", +}; +} // namespace + +const std::vector<std::string>& allMethodNames() { return rpcMethodNames; } + +namespace { +std::unique_ptr<RpcMethod> createMethod(const std::string& methodName) { - if(methodName == AddUriRpcMethod::getMethodName()) { + if (methodName == AddUriRpcMethod::getMethodName()) { return make_unique<AddUriRpcMethod>(); + } + #ifdef ENABLE_BITTORRENT - } else if(methodName == AddTorrentRpcMethod::getMethodName()) { + if (methodName == AddTorrentRpcMethod::getMethodName()) { return make_unique<AddTorrentRpcMethod>(); + } + + if (methodName == GetPeersRpcMethod::getMethodName()) { + return make_unique<GetPeersRpcMethod>(); + } #endif // ENABLE_BITTORRENT + #ifdef ENABLE_METALINK - } - else if(methodName == AddMetalinkRpcMethod::getMethodName()) { + if (methodName == AddMetalinkRpcMethod::getMethodName()) { return make_unique<AddMetalinkRpcMethod>(); -#endif // ENABLE_METALINK } - else if(methodName == RemoveRpcMethod::getMethodName()) { +#endif // ENABLE_METALINK + + if (methodName == RemoveRpcMethod::getMethodName()) { return make_unique<RemoveRpcMethod>(); - } else if(methodName == PauseRpcMethod::getMethodName()) { + } + + if (methodName == PauseRpcMethod::getMethodName()) { return make_unique<PauseRpcMethod>(); - } else if(methodName == ForcePauseRpcMethod::getMethodName()) { + } + + if (methodName == ForcePauseRpcMethod::getMethodName()) { return make_unique<ForcePauseRpcMethod>(); - } else if(methodName == PauseAllRpcMethod::getMethodName()) { + } + + if (methodName == PauseAllRpcMethod::getMethodName()) { return make_unique<PauseAllRpcMethod>(); - } else if(methodName == ForcePauseAllRpcMethod::getMethodName()) { + } + + if (methodName == ForcePauseAllRpcMethod::getMethodName()) { return make_unique<ForcePauseAllRpcMethod>(); - } else if(methodName == UnpauseRpcMethod::getMethodName()) { + } + + if (methodName == UnpauseRpcMethod::getMethodName()) { return make_unique<UnpauseRpcMethod>(); - } else if(methodName == UnpauseAllRpcMethod::getMethodName()) { + } + + if (methodName == UnpauseAllRpcMethod::getMethodName()) { return make_unique<UnpauseAllRpcMethod>(); - } else if(methodName == ForceRemoveRpcMethod::getMethodName()) { + } + + if (methodName == ForceRemoveRpcMethod::getMethodName()) { return make_unique<ForceRemoveRpcMethod>(); - } else if(methodName == ChangePositionRpcMethod::getMethodName()) { + } + + if (methodName == ChangePositionRpcMethod::getMethodName()) { return make_unique<ChangePositionRpcMethod>(); - } else if(methodName == TellStatusRpcMethod::getMethodName()) { + } + + if (methodName == TellStatusRpcMethod::getMethodName()) { return make_unique<TellStatusRpcMethod>(); - } else if(methodName == GetUrisRpcMethod::getMethodName()) { + } + + if (methodName == GetUrisRpcMethod::getMethodName()) { return make_unique<GetUrisRpcMethod>(); - } else if(methodName == GetFilesRpcMethod::getMethodName()) { + } + + if (methodName == GetFilesRpcMethod::getMethodName()) { return make_unique<GetFilesRpcMethod>(); -#ifdef ENABLE_BITTORRENT } - else if(methodName == GetPeersRpcMethod::getMethodName()) { - return make_unique<GetPeersRpcMethod>(); -#endif // ENABLE_BITTORRENT - } else if(methodName == GetServersRpcMethod::getMethodName()) { + + if (methodName == GetServersRpcMethod::getMethodName()) { return make_unique<GetServersRpcMethod>(); - } else if(methodName == TellActiveRpcMethod::getMethodName()) { + } + + if (methodName == TellActiveRpcMethod::getMethodName()) { return make_unique<TellActiveRpcMethod>(); - } else if(methodName == TellWaitingRpcMethod::getMethodName()) { + } + + if (methodName == TellWaitingRpcMethod::getMethodName()) { return make_unique<TellWaitingRpcMethod>(); - } else if(methodName == TellStoppedRpcMethod::getMethodName()) { + } + + if (methodName == TellStoppedRpcMethod::getMethodName()) { return make_unique<TellStoppedRpcMethod>(); - } else if(methodName == GetOptionRpcMethod::getMethodName()) { + } + + if (methodName == GetOptionRpcMethod::getMethodName()) { return make_unique<GetOptionRpcMethod>(); - } else if(methodName == ChangeUriRpcMethod::getMethodName()) { + } + + if (methodName == ChangeUriRpcMethod::getMethodName()) { return make_unique<ChangeUriRpcMethod>(); - } else if(methodName == ChangeOptionRpcMethod::getMethodName()) { + } + + if (methodName == ChangeOptionRpcMethod::getMethodName()) { return make_unique<ChangeOptionRpcMethod>(); - } else if(methodName == GetGlobalOptionRpcMethod::getMethodName()) { + } + + if (methodName == GetGlobalOptionRpcMethod::getMethodName()) { return make_unique<GetGlobalOptionRpcMethod>(); - } else if(methodName == ChangeGlobalOptionRpcMethod::getMethodName()) { + } + + if (methodName == ChangeGlobalOptionRpcMethod::getMethodName()) { return make_unique<ChangeGlobalOptionRpcMethod>(); - } else if(methodName == PurgeDownloadResultRpcMethod::getMethodName()) { + } + + if (methodName == PurgeDownloadResultRpcMethod::getMethodName()) { return make_unique<PurgeDownloadResultRpcMethod>(); - } else if(methodName == RemoveDownloadResultRpcMethod::getMethodName()) { + } + + if (methodName == RemoveDownloadResultRpcMethod::getMethodName()) { return make_unique<RemoveDownloadResultRpcMethod>(); - } else if(methodName == GetVersionRpcMethod::getMethodName()) { + } + + if (methodName == GetVersionRpcMethod::getMethodName()) { return make_unique<GetVersionRpcMethod>(); - } else if(methodName == GetSessionInfoRpcMethod::getMethodName()) { + } + + if (methodName == GetSessionInfoRpcMethod::getMethodName()) { return make_unique<GetSessionInfoRpcMethod>(); - } else if(methodName == ShutdownRpcMethod::getMethodName()) { + } + + if (methodName == ShutdownRpcMethod::getMethodName()) { return make_unique<ShutdownRpcMethod>(); - } else if(methodName == ForceShutdownRpcMethod::getMethodName()) { + } + + if (methodName == ForceShutdownRpcMethod::getMethodName()) { return make_unique<ForceShutdownRpcMethod>(); - } else if(methodName == GetGlobalStatRpcMethod::getMethodName()) { + } + + if (methodName == GetGlobalStatRpcMethod::getMethodName()) { return make_unique<GetGlobalStatRpcMethod>(); - } else if(methodName == SaveSessionRpcMethod::getMethodName()) { + } + + if (methodName == SaveSessionRpcMethod::getMethodName()) { return make_unique<SaveSessionRpcMethod>(); - } else if(methodName == SystemMulticallRpcMethod::getMethodName()) { + } + + if (methodName == SystemMulticallRpcMethod::getMethodName()) { return make_unique<SystemMulticallRpcMethod>(); - } else { - return nullptr; } + + if (methodName == SystemListMethodsRpcMethod::getMethodName()) { + return make_unique<SystemListMethodsRpcMethod>(); + } + + return nullptr; } } // namespace RpcMethod* getMethod(const std::string& methodName) { auto itr = cache.find(methodName); - if(itr == cache.end()) { + if (itr == std::end(cache)) { auto m = createMethod(methodName); - if(m) { + if (m) { auto rv = cache.insert(std::make_pair(methodName, std::move(m))); return (*rv.first).second.get(); - } else { - if(!noSuchRpcMethod) { - noSuchRpcMethod = make_unique<NoSuchMethodRpcMethod>(); - } - return noSuchRpcMethod.get(); } - } else { - return (*itr).second.get(); + + if (!noSuchRpcMethod) { + noSuchRpcMethod = make_unique<NoSuchMethodRpcMethod>(); + } + + return noSuchRpcMethod.get(); } + + return (*itr).second.get(); } } // namespace rpc |
