summaryrefslogtreecommitdiff
path: root/src/RpcMethodFactory.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/RpcMethodFactory.cc')
-rw-r--r--src/RpcMethodFactory.cc193
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