MCPcopy Create free account
hub / github.com/cinemast/libjson-rpc-cpp / GetProcedure

Method GetProcedure

src/jsonrpccpp/common/specificationparser.cpp:49–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47 return result;
48}
49void SpecificationParser::GetProcedure(Json::Value &signature, Procedure &result) {
50 if (signature.isObject() && !GetProcedureName(signature).empty()) {
51 result.SetProcedureName(GetProcedureName(signature));
52 if (signature.isMember(KEY_SPEC_RETURN_TYPE)) {
53 result.SetProcedureType(RPC_METHOD);
54 result.SetReturnType(toJsonType(signature[KEY_SPEC_RETURN_TYPE]));
55 } else {
56 result.SetProcedureType(RPC_NOTIFICATION);
57 }
58 if (signature.isMember(KEY_SPEC_PROCEDURE_PARAMETERS)) {
59 if (signature[KEY_SPEC_PROCEDURE_PARAMETERS].isObject() || signature[KEY_SPEC_PROCEDURE_PARAMETERS].isArray()) {
60 if (signature[KEY_SPEC_PROCEDURE_PARAMETERS].isArray()) {
61 result.SetParameterDeclarationType(PARAMS_BY_POSITION);
62 GetPositionalParameters(signature, result);
63 } else if (signature[KEY_SPEC_PROCEDURE_PARAMETERS].isObject()) {
64 result.SetParameterDeclarationType(PARAMS_BY_NAME);
65 GetNamedParameters(signature, result);
66 }
67 } else {
68 throw JsonRpcException(Errors::ERROR_SERVER_PROCEDURE_SPECIFICATION_SYNTAX, "Invalid signature types in fileds: " + signature.toStyledString());
69 }
70 }
71 } else {
72 throw JsonRpcException(Errors::ERROR_SERVER_PROCEDURE_SPECIFICATION_SYNTAX,
73 "procedure declaration does not contain name or parameters: " + signature.toStyledString());
74 }
75}
76void SpecificationParser::GetFileContent(const std::string &filename, std::string &target) {
77 ifstream config(filename.c_str());
78

Callers

nothing calls this directly

Calls 6

SetProcedureNameMethod · 0.80
SetProcedureTypeMethod · 0.80
SetReturnTypeMethod · 0.80
JsonRpcExceptionClass · 0.70
emptyMethod · 0.45

Tested by

no test coverage detected