MIDAS
Loading...
Searching...
No Matches
mjsonrpc.h
Go to the documentation of this file.
1/********************************************************************\
2
3 Name: mjsonrpc.h
4 Created by: Konstantin Olchanski
5
6 Contents: MIDAS JSON-RPC library
7
8\********************************************************************/
9
10#ifndef MJSONRPC_INCLUDE
11#define MJSONRPC_INCLUDE
12
13#include "mjson.h"
14
18typedef MJsonNode* (mjsonrpc_handler_t)(const MJsonNode* params);
19
20extern int mjsonrpc_debug;
21
22void mjsonrpc_init();
24void mjsonrpc_add_handler(const char* method, mjsonrpc_handler_t *handler, bool needs_locking = false);
25void mjsonrpc_exit();
26
27void mjsonrpc_set_std_mutex(void* mutex);
28
29MJsonNode* mjsonrpc_get_schema();
30std::string mjsonrpc_schema_to_text(const MJsonNode *schema);
31
32MJsonNode* mjsonrpc_make_error(int code, const char* message, const char* data);
33MJsonNode* mjsonrpc_make_result(MJsonNode* node);
34MJsonNode* mjsonrpc_make_result(const char* name, MJsonNode* value, const char* name2 = NULL, MJsonNode* value2 = NULL, const char* name3 = NULL, MJsonNode* value3 = NULL);
35const MJsonNode* mjsonrpc_get_param(const MJsonNode* params, const char* name, MJsonNode** error);
36
37MJsonNode* mjsonrpc_decode_post_data(const char* post_data);
38
57
58class MJSO: public MJsonNode
59{
60protected:
61 MJsonNode *properties;
62 MJsonNode *required;
63 MJsonNode *items;
64
67
68protected:
69 static MJSO* MakeObjectSchema(const char* description); // constructor for object schema
70 static MJSO* MakeArraySchema(const char* description); // constructor for array schema
71 void AddToSchema(MJsonNode* s, const char* name); // add subschema to this schema
72
73public:
74 static MJSO* I(); // create top level schema
75 void D(const char* description); // add description
76 MJSO* Params(); // create "params"
77 MJSO* Result(); // create "result"
78 MJSO* PA(const char* description); // ???
79 MJSO* RA(const char* description); // ???
80 void P(const char* name, int mjson_type, const char* description); // document a parameter
81 void R(const char* name, int mjson_type, const char* description); // document a return value
82 void Add(const char* name, int mjson_type, const char* description); // add object property or array item
83 MJSO* AddObject(const char* name, const char* description); // add sub-object
84 MJSO* AddArray(const char* name, const char* description); // add sub-array
85
86protected:
87 MJSO(); // ctor
88};
89
90#endif
91
92/* emacs
93 * Local Variables:
94 * tab-width: 8
95 * c-basic-offset: 3
96 * indent-tabs-mode: nil
97 * End:
98 */
99
MJSO * AddArray(const char *name, const char *description)
Definition mjsonrpc.cxx:394
void mjsonrpc_init()
MJsonNode * properties
Definition mjsonrpc.h:61
void D(const char *description)
Definition mjsonrpc.cxx:303
MJsonNode * mjsonrpc_decode_post_data(const char *post_data)
MJsonNode * mjsonrpc_make_result(MJsonNode *node)
Definition mjsonrpc.cxx:135
MJSO * AddObject(const char *name, const char *description)
Definition mjsonrpc.cxx:385
static MJSO * MakeArraySchema(const char *description)
Definition mjsonrpc.cxx:243
MJSO * RA(const char *description)
Definition mjsonrpc.cxx:333
void mjsonrpc_exit()
MJSO * Params()
Definition mjsonrpc.cxx:308
MJsonNode *() mjsonrpc_handler_t(const MJsonNode *params)
Definition mjsonrpc.h:18
static MJSO * I()
Definition mjsonrpc.cxx:298
void Add(const char *name, int mjson_type, const char *description)
Definition mjsonrpc.cxx:356
void mjsonrpc_user_init()
void AddToSchema(MJsonNode *s, const char *name)
Definition mjsonrpc.cxx:262
MJsonNode * mjsonrpc_make_error(int code, const char *message, const char *data)
Definition mjsonrpc.cxx:123
MJsonNode * mjsonrpc_get_schema()
MJsonNode * required
Definition mjsonrpc.h:62
int mjsonrpc_debug
Definition mjsonrpc.cxx:112
static MJSO * MakeObjectSchema(const char *description)
Definition mjsonrpc.cxx:230
MJSO * Result()
Definition mjsonrpc.cxx:317
void mjsonrpc_set_std_mutex(void *mutex)
const MJsonNode * mjsonrpc_get_param(const MJsonNode *params, const char *name, MJsonNode **error)
Definition mjsonrpc.cxx:178
MJSO * result
Definition mjsonrpc.h:66
MJsonNode * items
Definition mjsonrpc.h:63
std::string mjsonrpc_schema_to_text(const MJsonNode *schema)
MJSO * params
Definition mjsonrpc.h:65
void mjsonrpc_add_handler(const char *method, mjsonrpc_handler_t *handler, bool needs_locking=false)
MJSO * PA(const char *description)
Definition mjsonrpc.cxx:326
void * data
Definition mana.cxx:268
char description[1000]
Definition mana.cxx:267
#define message(type, str)
#define name(x)
Definition midas_macro.h:24
double value[100]
Definition odbhist.cxx:42
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24
#define R(t)
Definition sha256.cxx:168
#define P(a, b, c, d, e, f, g, h, x, K)
Definition sha256.cxx:174