| 47 | return result; |
| 48 | } |
| 49 | void 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 | } |
| 76 | void SpecificationParser::GetFileContent(const std::string &filename, std::string &target) { |
| 77 | ifstream config(filename.c_str()); |
| 78 |
nothing calls this directly
no test coverage detected