ADTF  3.18.3
procedure.h
1 /*************************************************************************
2  * libjson-rpc-cpp
3  *************************************************************************
4  * @file procedure.h
5  * @date 31.12.2012
6  * @author Peter Spiess-Knafl <dev@spiessknafl.at>
7  * @license See attached LICENSE.txt
8  ************************************************************************/
9 
10 #ifndef JSONRPC_CPP_PROCEDURE_H_
11 #define JSONRPC_CPP_PROCEDURE_H_
12 
13 #include <string>
14 #include <map>
15 
16 #include "jsonparser.h"
17 #include "specification.h"
18 
19 namespace jsonrpc
20 {
21  typedef std::map<std::string, jsontype_t> parameterNameList_t;
22  typedef std::vector<jsontype_t> parameterPositionList_t;
23 
24  typedef enum {PARAMS_BY_NAME, PARAMS_BY_POSITION} parameterDeclaration_t;
25 
26  class Procedure
27  {
28  public:
29 
30  Procedure();
31 
37  Procedure(const std::string& name, parameterDeclaration_t paramType, ...);
38 
45  Procedure(const std::string& name, parameterDeclaration_t paramType, jsontype_t returntype, ...);
46 
47 
56  bool ValdiateParameters(const Json::Value &parameters) const;
57 
58 
59  //Various get methods.
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;
65 
66  //Various set methods.
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);
71 
72 
78  void AddParameter(const std::string& name, jsontype_t type);
79 
80  bool ValidateNamedParameters (const Json::Value &parameters) const;
81  bool ValidatePositionalParameters (const Json::Value &parameters) const;
82 
83  private:
84 
88  std::string procedureName;
89 
94  parameterNameList_t parametersName;
95 
99  parameterPositionList_t parametersPosition;
100 
104  procedure_t procedureType;
105 
109  jsontype_t returntype;
110 
114  parameterDeclaration_t paramDeclaration;
115 
116  bool ValidateSingleParameter (jsontype_t expectedType, const Json::Value &value) const;
117  };
118 } /* namespace jsonrpc */
119 #endif /* JSONRPC_CPP_PROCEDURE_H_ */
Represents a JSON value.
Definition: value.h:177
jsontype_t returntype
this field is only valid if procedure is of type method (not notification).
Definition: procedure.h:109
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.
Definition: procedure.h:99
bool ValdiateParameters(const Json::Value &parameters) 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
Definition: procedure.h:104
std::string procedureName
Each Procedure should have a name.
Definition: procedure.h:88
parameterNameList_t parametersName
This map represents all necessary Parameters of each Procedure.
Definition: procedure.h:94
parameterDeclaration_t paramDeclaration
paramDeclaration this field defines if procedure uses named or positional parameters.
Definition: procedure.h:114