X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_rpc_json.cpp;h=0502c7cbdcb4b13dfef60f0f589fcb665655a709;hb=e9d1efc1ae29ee86b3c2a42bf56531afac7add6d;hp=960a06b9404e6072b40876dd4cb3fca380334ddf;hpb=801fca4042fa3365f647564e6a060436958aed31;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_rpc_json.cpp b/src/modules/m_rpc_json.cpp index 960a06b94..0502c7cbd 100644 --- a/src/modules/m_rpc_json.cpp +++ b/src/modules/m_rpc_json.cpp @@ -30,32 +30,33 @@ class ModuleRpcJson : public Module { - void MthModuleVersion (HTTPRequest *http, json::Value &request, json::Value &response) - { - std::string result = "GetVersion().ToString()"; - response["result"] = result; - } - - void system_list_methods (HTTPRequest *http, json::Value &request, json::Value &response) - { - unsigned i = 0; - json::Value method_list (json::arrayValue); - - json::rpc::method_map::iterator it; - for (it = json::rpc::methods.begin(); it != json::rpc::methods.end(); ++it) - { - method_list[i] = json::Value (it->first); - i++; - } - - response["result"] = method_list; - } + void MthModuleVersion (HTTPRequest *http, json::Value &request, json::Value &response) + { + std::string result = "GetVersion().ToString()"; + response["result"] = result; + } + + void system_list_methods (HTTPRequest *http, json::Value &request, json::Value &response) + { + unsigned i = 0; + json::Value method_list (json::arrayValue); + + json::rpc::method_map::iterator it; + for (it = json::rpc::methods.begin(); it != json::rpc::methods.end(); ++it) + { + method_list[i] = json::Value (it->first); + i++; + } + + response["result"] = method_list; + } public: ModuleRpcJson(InspIRCd* Me) : Module(Me) { - json::rpc::add_method ("system.listMethods", (Module *)this, (void (Module::*)(HTTPRequest*, json::Value&, json::Value&))&ModuleRpcJson::system_list_methods); - json::rpc::add_method ("ircd.moduleVersion", (Module *)this, (void (Module::*)(HTTPRequest*, json::Value&, json::Value&))&ModuleRpcJson::MthModuleVersion); + ServerInstance->PublishInterface("JSON-RPC", this); + json::rpc::add_method ("system.listMethods", (Module *)this, (void (Module::*)(HTTPRequest*, json::Value&, json::Value&))&ModuleRpcJson::system_list_methods); + json::rpc::add_method ("ircd.moduleVersion", (Module *)this, (void (Module::*)(HTTPRequest*, json::Value&, json::Value&))&ModuleRpcJson::MthModuleVersion); } void OnEvent(Event* event) @@ -95,6 +96,7 @@ class ModuleRpcJson : public Module virtual ~ModuleRpcJson() { + ServerInstance->UnpublishInterface("JSON-RPC", this); } virtual Version GetVersion() @@ -103,37 +105,6 @@ class ModuleRpcJson : public Module } }; -static void -unreachable_internal (char const *file, int line, char const *function) -{ - char buf[1024]; - snprintf (buf, 1024, "%s (%d) [%s] critical: Unreachable line reached.", - file, line, function); - - throw std::runtime_error (buf); -} - -static void -throw_unless_internal (char const *file, int line, char const *function, char const *condition) -{ - char buf[1024]; - snprintf (buf, 1024, "%s (%d) [%s] critical: Assertion `%s' failed.", - file, line, function, condition); - - throw std::runtime_error (buf); -} - -static void -throw_msg_unless_internal (char const *file, int line, char const *function, char const *message) -{ - char buf[1024]; - snprintf (buf, 1024, "%s (%d) [%s] critical: %s.", - file, line, function, message); - - throw std::runtime_error (buf); -} - - namespace json { ValueIteratorBase::ValueIteratorBase () @@ -885,6 +856,10 @@ namespace json throw std::runtime_error (buf); } + +#define throw_unreachable unreachable_internal (__FILE__, __LINE__, CURFUNC) +#define throw_unless(condition) if (!expect_false (condition)) throw_unless_internal (__FILE__, __LINE__, CURFUNC, #condition) +#define throw_msg_unless(condition, message) if (!expect_false (condition)) throw_msg_unless_internal (__FILE__, __LINE__, CURFUNC, message) const Value Value::null; const int Value::minInt = int (~ (unsigned (-1)/2)); @@ -2086,13 +2061,13 @@ namespace json method_map::iterator mthit = methods.find (methodName); if (mthit != methods.end ()) - { - mfp m = mthit->second; - Module *mod = new Module (*m.mod); - method mth = m.mth; - (mod->*mth) (http, request, response); - delete mod; - } + { + mfp m = mthit->second; + Module *mod = new Module (*m.mod); + method mth = m.mth; + (mod->*mth) (http, request, response); + delete mod; + } } void