10 #ifndef JSONRPC_CPP_PROCEDURE_H_
11 #define JSONRPC_CPP_PROCEDURE_H_
16 #include "jsonparser.h"
17 #include "specification.h"
21 typedef std::map<std::string, jsontype_t> parameterNameList_t;
22 typedef std::vector<jsontype_t> parameterPositionList_t;
24 typedef enum {PARAMS_BY_NAME, PARAMS_BY_POSITION} parameterDeclaration_t;
37 Procedure(
const std::string& name, parameterDeclaration_t paramType, ...);
60 const parameterNameList_t& GetParameters ()
const;
61 procedure_t GetProcedureType ()
const;
62 const std::string& GetProcedureName ()
const;
63 jsontype_t GetReturnType ()
const;
64 parameterDeclaration_t GetParameterDeclarationType ()
const;
67 void SetProcedureName (
const std::string &name);
68 void SetProcedureType (procedure_t type);
69 void SetReturnType (jsontype_t type);
70 void SetParameterDeclarationType (parameterDeclaration_t type);
80 bool ValidateNamedParameters (
const Json::Value ¶meters)
const;
81 bool ValidatePositionalParameters (
const Json::Value ¶meters)
const;
116 bool ValidateSingleParameter (jsontype_t expectedType,
const Json::Value &value)
const;
jsontype_t returntype
this field is only valid if procedure is of type method (not notification).
Procedure(const std::string &name, parameterDeclaration_t paramType, jsontype_t returntype,...)
Constructor for method with parameters as va_list.
Procedure(const std::string &name, parameterDeclaration_t paramType,...)
Constructor for notificaiton with parameters as va_list.
parameterPositionList_t parametersPosition
This vector holds all parametertypes by position.
bool ValdiateParameters(const Json::Value ¶meters) const
This method is validating the incoming parameters for each procedure.
void AddParameter(const std::string &name, jsontype_t type)
AddParameter.
procedure_t procedureType
defines whether the procedure is a method or a notification
std::string procedureName
Each Procedure should have a name.
parameterNameList_t parametersName
This map represents all necessary Parameters of each Procedure.
parameterDeclaration_t paramDeclaration
paramDeclaration this field defines if procedure uses named or positional parameters.