Midas C++ API - RPC functions
This page contains the full API reference for the rpc_xxx functions and the C++ side of the JSON-RPC interface.
For explanations and examples of sending commands between programs, see Communicating between programs.
RPC Functions (rpc_xxx)
Functions
cm_query_transition
INT cm_query_transition(int *transition, int *run_number, int *trans_time)
Query system if transition has occured. Normally, one registers callbacks for transitions via cm_register_transition. In some environments however, callbacks are not possible. In that case one spciefies a NULL pointer as the callback routine and can query transitions "manually" by calling this functions. A small FIFO takes care that no transition is lost if this functions did not get called between some transitions.
Parameters:
-
transition(int *) [out] –Type of transition, one of TR_xxx -
run_number(int *) -
trans_time(int *) [out] –Time (in UNIX time) of transition -
run_nuber[out] –Run number for transition
Returns:
Declared in include/midas.h:1712, defined in src/midas.cxx:14631
recv_tcp_check
INT recv_tcp_check(int sock)
Check if in TCP receive buffer associated with sock is some data. Called by ss_suspend.
Parameters:
-
sock(int) [in] –TCP receive socket
Returns:
-
INT–count Number of bytes remaining in TCP buffer
Declared in include/msystem.h:576, defined in src/midas.cxx:14866
rpc_add_allowed_host
INT rpc_add_allowed_host(const char* hostname)
Permit connections from listed hosts only
Returns:
-
RPC_SUCCESS–Successful completion -
RPC_NO_MEMORY–Too many allowed hosts
Declared in include/midas.h:1976, defined in src/midas.cxx:16668
rpc_check_allowed_host
INT rpc_check_allowed_host(const char* hostname)
Check if hostname is permitted to connect
Returns:
-
RPC_SUCCESS–hostname is permitted to connect -
RPC_NOT_REGISTERED–hostname not permitted to connect
Declared in include/midas.h:1977, defined in src/midas.cxx:16697
rpc_check_channels
INT rpc_check_channels()
Check open rpc channels by sending watchdog messages
Returns:
-
RPC_SUCCESS–Channel is still alive -
RPC_NET_ERROR–Connection is broken
Declared in include/msystem.h:578, defined in src/midas.cxx:17717
rpc_clear_allowed_hosts
INT rpc_clear_allowed_hosts()
Clear list of allowed hosts and permit connections from anybody
Returns:
-
RPC_SUCCESS–Successful completion
Declared in include/midas.h:1975, defined in src/midas.cxx:16643
rpc_client_accept
INT rpc_client_accept(int sock)
midas program accept new RPC connection (run transitions, etc)
Parameters:
-
sock(int) [in] –Listen socket
Returns:
-
RPC_SUCCESS–Successful completion -
RPC_NET_ERROR–Error in socket call -
RPC_CONNCLOSED–Connection was closed -
RPC_SHUTDOWN–Listener shutdown -
RPC_EXCEED_BUFFER–Not enough memory for network buffer
Declared in include/msystem.h:573, defined in src/midas.cxx:17031
rpc_convert_data
void rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags)
Convert data format between differenct computers
Parameters:
-
data(void *) [in,out] –Pointer to data
Is converted according to _convert_flag value -
tid(INT) [in] –Type ID of data, one of TID_xxx -
flags(INT) [in] –Combination of following flags:
RPC_IN: data is input parameter
RPC_OUT: data is output variable
RPC_FIXARRAY, RPC_VARARRAY: data is array
of "size" bytes (see next param.)
RPC_OUTGOING: data is outgoing -
size(INT) [in] –Size of bytes of data. Used for variable length arrays. -
convert_flags(INT) [in] –Flags for data conversion
Returns:
-
RPC_SUCCESS–Successful completion
Declared in include/midas.h:2017, defined in src/midas.cxx:11900
rpc_convert_single
void rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags)
Declared in include/midas.h:2016, defined in src/midas.cxx:11875
rpc_flush_event
INT rpc_flush_event()
Send event residing in the TCP cache buffer filled by rpc_send_event. This routine should be called when a run is stopped.
Returns:
-
INT–
Declared in include/midas.h:2008, defined in src/midas.cxx:14549
rpc_flush_event_socket
int rpc_flush_event_socket(int timeout_msec)
Receive and en-buffer events from the mserver event socket
Returns:
-
BM_SUCCESS–Event socket is empty, all data was read an en-buffered -
BM_ASYNC_RETURN–Event socket has unread data or event buffer is full and rpc_server_receive_event() has an un-buffered event. -
SS_EXIT–Server connection was closed -
SS_ABORT–Server connection was broken
Declared in include/msystem.h:663, defined in src/midas.cxx:17599
rpc_get_convert_flags
void rpc_get_convert_flags(INT * convert_flags)
Declared in include/midas.h:2015, defined in src/midas.cxx:11800
rpc_get_mserver_acception
RPC_SERVER_ACCEPTION*rpc_get_mserver_acception()
Declared in include/msystem.h:585, defined in src/midas.cxx:11707
rpc_get_timeout
INT rpc_get_timeout(HNDLE hConn)
Set RPC option
Get RPC timeout
Parameters:
-
hConn(HNDLE) –RPC connection handle, -1 for server connection, -2 for rpc connect timeout -
item–One of RPC_Oxxx -
value–Value to set
Returns:
-
INT– -
timeout value
Declared in include/midas.h:1982, defined in src/midas.cxx:13167
rpc_name_tid
INT rpc_name_tid(const char* name)
inverse of rpc_tid_name()
Declared in include/midas.h:2002, defined in src/midas.cxx:11972
rpc_register_client
INT rpc_register_client(const char *name, RPC_LIST * list)
Register RPC client for standalone mode (without standard midas server)
Parameters:
-
name(const char *) –Name of this client -
list(RPC_LIST *) –Array of RPC_LIST structures containing function IDs and parameter definitions. The end of the list must be indicated by a function ID of zero.
Returns:
-
INT–
Declared in include/midas.h:1994, defined in src/midas.cxx:12002
rpc_register_functions
INT rpc_register_functions(const RPC_LIST * new_list, RPC_HANDLER func)
Register a set of RPC functions (both as clients or servers)
Parameters:
-
new_list(const RPC_LIST *) –Array of RPC_LIST structures containing function IDs and parameter definitions. The end of the list must be indicated by a function ID of zero. -
func(RPC_HANDLER) –Default dispatch function
Returns:
-
INT–
Declared in include/midas.h:1979, defined in src/midas.cxx:12021
rpc_register_listener
INT rpc_register_listener(int port, RPC_HANDLER func, int *plsock, int *pport)
Register the calling process as a MIDAS RPC server. Note that cm_connnect_experiment must be called prior to any call of rpc_register_listener.
Parameters:
-
port(int) [in] –TCP port for listen. If port==0, the OS chooses a free port and returns it in *pport -
func(RPC_HANDLER) [in] –Default dispatch function -
plsock(int *) [out] –Listener socket, should not be NULL -
pport(int *) [out] –Port under which server is listening, can be NULL
Returns:
-
RPC_SUCCESS–Successful completion -
RPC_NET_ERROR–Error in socket call -
RPC_NOT_REGISTERED–cm_connect_experiment was not called
Declared in include/msystem.h:567, defined in src/midas.cxx:15088
rpc_register_server
INT rpc_register_server(int port, int *plsock, int *pport)
Register the calling process as a MIDAS RPC server. Note that cm_connnect_experiment must be called prior to any call of rpc_register_server.
Parameters:
-
port(int) [in] –TCP port for listen. If port==0, the OS chooses a free port and returns it in *pport -
plsock(int *) [out] –Listener socket, can be NULL -
pport(int *) [out] –Port under which server is listening, can be NULL
Returns:
-
RPC_SUCCESS–Successful completion -
RPC_NET_ERROR–Error in socket call -
RPC_NOT_REGISTERED–cm_connect_experiment was not called
Declared in include/midas.h:1993, defined in src/midas.cxx:15047
rpc_send_event
INT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode)
Fast send_event routine which bypasses the RPC layer and sends the event directly at the TCP level.
Parameters:
-
buffer_handle(INT) –Handle of the buffer to send the event to. Must be obtained via bm_open_buffer. -
event(const EVENT_HEADER *) -
unused(int) -
async_flag(INT) –BM_WAIT / BM_NO_WAIT flag. In BM_NO_WAIT mode, the function returns immediately if it cannot send the event over the network. In BM_WAIT mode, it waits until the packet is sent (blocking). -
mode(INT) –Determines in which mode the event is sent. If zero, use RPC socket, if one, use special event socket to bypass RPC layer on the server side. -
source–Address of the event to send. It must have a proper event header. -
buf_size–Size of event in bytes with header.
Returns:
-
INT–
Declared in include/midas.h:2007, defined in src/midas.cxx:14412
rpc_send_event1
INT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event)
Send event to mserver using the event socket connection, bypassing the RPC layer
Parameters:
-
buffer_handle(INT) –Handle of the buffer to send the event to. Must be obtained via bm_open_buffer. -
event(const EVENT_HEADER *) –Pointer to event header
Returns:
-
INT–
Declared in include/midas.h:2010, defined in src/midas.cxx:14430
rpc_send_event_sg
INT rpc_send_event_sg(INT buffer_handle, int sg_n, const char* const sg_ptr[], const size_t sg_len[])
Declared in include/midas.h:2011, defined in src/midas.cxx:14436
rpc_server_accept
INT rpc_server_accept(int sock)
Accept new incoming connections
Parameters:
-
sock(int) -
lscok[in] –Listen socket
Returns:
-
RPC_SUCCESS–Successful completion -
RPC_NET_ERROR–Error in socket call -
RPC_CONNCLOSED–Connection was closed -
RPC_SHUTDOWN–Listener shutdown -
RPC_EXCEED_BUFFER–Not enough memory for network buffer
Declared in include/msystem.h:572, defined in src/midas.cxx:16774
rpc_server_callback
INT rpc_server_callback(struct callback_addr *callback)
Callback a remote client. Setup _server_acception entry with optional conversion flags and establish two-way TCP connection.
Returns:
-
RPC_SUCCESS–Successful completion
Declared in include/msystem.h:571, defined in src/midas.cxx:17135
rpc_server_loop
INT rpc_server_loop()
mserver main event loop
Declared in include/midas.h:1995, defined in src/midas.cxx:17276
rpc_server_receive_event
INT rpc_server_receive_event(int idx, RPC_SERVER_ACCEPTION* sa, int timeout_msec)
Receive event and dispatch it
Returns:
-
RPC_SUCCESS–Successful completion -
RPC_EXCEED_BUFFER–Not enough memeory to allocate buffer -
SS_EXIT–Server connection was closed -
SS_ABORT–Server connection was broken
Declared in include/msystem.h:570, defined in src/midas.cxx:17444
rpc_server_receive_rpc
INT rpc_server_receive_rpc(RPC_SERVER_ACCEPTION* sa)
Receive rpc commands and execute them. Close the connection if client has broken TCP pipe.
Returns:
-
RPC_SUCCESS–Successful completion -
RPC_EXCEED_BUFFER–Not enough memeory to allocate buffer -
SS_EXIT–Server connection was closed -
SS_ABORT–Server connection was broken
Declared in include/msystem.h:569, defined in src/midas.cxx:17304
rpc_server_shutdown
INT rpc_server_shutdown()
Shutdown RPC server, abort all connections
Returns:
-
RPC_SUCCESS–Successful completion
Declared in include/midas.h:1996, defined in src/midas.cxx:17646
rpc_set_timeout
INT rpc_set_timeout(HNDLE hConn, int timeout_msec, int* old_timeout_msec = NULL)
Set RPC timeout
Parameters:
-
hConn(HNDLE) –RPC connection handle, RPC_HNDLE_MSERVER for mserver connection, RPC_HNDLE_CONNECT for rpc connect timeout -
timeout_msec(int) –RPC timeout in milliseconds -
old_timeout_msec(int*, default:NULL) –returns old value of RPC timeout in milliseconds
Returns:
-
INT–
Declared in include/midas.h:1983, defined in src/midas.cxx:13192
rpc_test_rpc
INT rpc_test_rpc()
Test RPC parameters encoding and decoding
Returns:
-
RPC_SUCCESS–Successful completion
Declared in include/midas.h:2013, defined in src/midas.cxx:16605
rpc_tid_name
const char *rpc_tid_name(INT id)
Declared in include/midas.h:2000, defined in src/midas.cxx:11958
rpc_tid_name_old
const char *rpc_tid_name_old(INT id)
Declared in include/midas.h:2001, defined in src/midas.cxx:11965
rpc_tid_size
INT rpc_tid_size(INT id)
Declared in include/midas.h:1999, defined in src/midas.cxx:11951
Macros
routine IDs for RPC calls
RPC_AL_CHECK
#define RPC_AL_CHECK 11500
Defined in include/mrpc.h:115
RPC_AL_RESET_ALARM
#define RPC_AL_RESET_ALARM 11502
Defined in include/mrpc.h:117
RPC_AL_TRIGGER_ALARM
#define RPC_AL_TRIGGER_ALARM 11501
Defined in include/mrpc.h:116
RPC_ANA_CLEAR_HISTOS
#define RPC_ANA_CLEAR_HISTOS 13000
Defined in include/mrpc.h:121
RPC_BM_ADD_EVENT_REQUEST
#define RPC_BM_ADD_EVENT_REQUEST 11107
Defined in include/mrpc.h:43
RPC_BM_CLOSE_ALL_BUFFERS
#define RPC_BM_CLOSE_ALL_BUFFERS 11102
Defined in include/mrpc.h:38
RPC_BM_CLOSE_BUFFER
#define RPC_BM_CLOSE_BUFFER 11101
Defined in include/mrpc.h:37
RPC_BM_EMPTY_BUFFERS
#define RPC_BM_EMPTY_BUFFERS 11113
Defined in include/mrpc.h:49
RPC_BM_FLUSH_CACHE
#define RPC_BM_FLUSH_CACHE 11110
Defined in include/mrpc.h:46
RPC_BM_GET_BUFFER_INFO
#define RPC_BM_GET_BUFFER_INFO 11103
Defined in include/mrpc.h:39
RPC_BM_GET_BUFFER_LEVEL
#define RPC_BM_GET_BUFFER_LEVEL 11104
Defined in include/mrpc.h:40
RPC_BM_INIT_BUFFER_COUNTERS
#define RPC_BM_INIT_BUFFER_COUNTERS 11105
Defined in include/mrpc.h:41
RPC_BM_MARK_READ_WAITING
#define RPC_BM_MARK_READ_WAITING 11112
Defined in include/mrpc.h:48
RPC_BM_OPEN_BUFFER
#define RPC_BM_OPEN_BUFFER 11100
Defined in include/mrpc.h:36
RPC_BM_RECEIVE_EVENT
#define RPC_BM_RECEIVE_EVENT 11111
Defined in include/mrpc.h:47
RPC_BM_RECEIVE_EVENT_CXX
#define RPC_BM_RECEIVE_EVENT_CXX 11115
Defined in include/mrpc.h:51
RPC_BM_REMOVE_EVENT_REQUEST
#define RPC_BM_REMOVE_EVENT_REQUEST 11108
Defined in include/mrpc.h:44
RPC_BM_SEND_EVENT
#define RPC_BM_SEND_EVENT 11109
Defined in include/mrpc.h:45
RPC_BM_SET_CACHE_SIZE
#define RPC_BM_SET_CACHE_SIZE 11106
Defined in include/mrpc.h:42
RPC_BM_SKIP_EVENT
#define RPC_BM_SKIP_EVENT 11114
Defined in include/mrpc.h:50
RPC_BRPC
#define RPC_BRPC 18001
Defined in include/mrpc.h:137
RPC_BRPC_CXX
#define RPC_BRPC_CXX 18003
Defined in include/mrpc.h:139
RPC_CM_ASCTIME
#define RPC_CM_ASCTIME 11007
Defined in include/mrpc.h:28
RPC_CM_CHECK_CLIENT
#define RPC_CM_CHECK_CLIENT 11014
Defined in include/mrpc.h:34
RPC_CM_CLEANUP
#define RPC_CM_CLEANUP 11002
Defined in include/mrpc.h:23
RPC_CM_EXIST
#define RPC_CM_EXIST 11011
Defined in include/mrpc.h:31
RPC_CM_GET_WATCHDOG_INFO
#define RPC_CM_GET_WATCHDOG_INFO 11003
Defined in include/mrpc.h:24
RPC_CM_MSG
#define RPC_CM_MSG 11009
Defined in include/mrpc.h:30
RPC_CM_MSG_LOG
#define RPC_CM_MSG_LOG 11004
Defined in include/mrpc.h:25
RPC_CM_MSG_LOG1
#define RPC_CM_MSG_LOG1 11013
Defined in include/mrpc.h:33
RPC_CM_MSG_RETRIEVE
#define RPC_CM_MSG_RETRIEVE 11012
Defined in include/mrpc.h:32
RPC_CM_SET_CLIENT_INFO
#define RPC_CM_SET_CLIENT_INFO 11000
Defined in include/mrpc.h:21
RPC_CM_SET_WATCHDOG_PARAMS
#define RPC_CM_SET_WATCHDOG_PARAMS 11001
Defined in include/mrpc.h:22
RPC_CM_SYNCHRONIZE
#define RPC_CM_SYNCHRONIZE 11006
Defined in include/mrpc.h:27
RPC_CM_TIME
#define RPC_CM_TIME 11008
Defined in include/mrpc.h:29
RPC_CNAF16
#define RPC_CNAF16 16000
Defined in include/mrpc.h:131
RPC_CNAF24
#define RPC_CNAF24 16001
Defined in include/mrpc.h:132
RPC_DB_ADD_OPEN_RECORD
#define RPC_DB_ADD_OPEN_RECORD 11222
Defined in include/mrpc.h:73
RPC_DB_CHECK_RECORD
#define RPC_DB_CHECK_RECORD 11240
Defined in include/mrpc.h:90
RPC_DB_CLOSE_ALL_DATABASES
#define RPC_DB_CLOSE_ALL_DATABASES 11202
Defined in include/mrpc.h:55
RPC_DB_CLOSE_DATABASE
#define RPC_DB_CLOSE_DATABASE 11201
Defined in include/mrpc.h:54
RPC_DB_COPY_XML
#define RPC_DB_COPY_XML 11249
Defined in include/mrpc.h:99
RPC_DB_CREATE_KEY
#define RPC_DB_CREATE_KEY 11203
Defined in include/mrpc.h:56
RPC_DB_CREATE_LINK
#define RPC_DB_CREATE_LINK 11204
Defined in include/mrpc.h:57
RPC_DB_CREATE_RECORD
#define RPC_DB_CREATE_RECORD 11230
Defined in include/mrpc.h:81
RPC_DB_DELETE_KEY
#define RPC_DB_DELETE_KEY 11210
Defined in include/mrpc.h:63
RPC_DB_ENUM_KEY
#define RPC_DB_ENUM_KEY 11211
Defined in include/mrpc.h:64
RPC_DB_ENUM_LINK
#define RPC_DB_ENUM_LINK 11228
Defined in include/mrpc.h:79
RPC_DB_FIND_KEY
#define RPC_DB_FIND_KEY 11207
Defined in include/mrpc.h:60
RPC_DB_FIND_LINK
#define RPC_DB_FIND_LINK 11208
Defined in include/mrpc.h:61
RPC_DB_FLUSH_DATABASE
#define RPC_DB_FLUSH_DATABASE 11235
Defined in include/mrpc.h:85
RPC_DB_GET_DATA
#define RPC_DB_GET_DATA 11213
Defined in include/mrpc.h:66
RPC_DB_GET_DATA1
#define RPC_DB_GET_DATA1 11238
Defined in include/mrpc.h:88
RPC_DB_GET_DATA_CXX
#define RPC_DB_GET_DATA_CXX 11250
Defined in include/mrpc.h:100
RPC_DB_GET_DATA_INDEX
#define RPC_DB_GET_DATA_INDEX 11231
Defined in include/mrpc.h:82
RPC_DB_GET_KEY
#define RPC_DB_GET_KEY 11212
Defined in include/mrpc.h:65
RPC_DB_GET_KEY_INFO
#define RPC_DB_GET_KEY_INFO 11237
Defined in include/mrpc.h:87
RPC_DB_GET_KEY_TIME
#define RPC_DB_GET_KEY_TIME 11232
Defined in include/mrpc.h:83
RPC_DB_GET_LINK
#define RPC_DB_GET_LINK 11242
Defined in include/mrpc.h:92
RPC_DB_GET_LINK_DATA
#define RPC_DB_GET_LINK_DATA 11243
Defined in include/mrpc.h:93
RPC_DB_GET_NEXT_LINK
#define RPC_DB_GET_NEXT_LINK 11241
Defined in include/mrpc.h:91
RPC_DB_GET_OPEN_RECORDS
#define RPC_DB_GET_OPEN_RECORDS 11233
Defined in include/mrpc.h:84
RPC_DB_GET_PARENT
#define RPC_DB_GET_PARENT 11248
Defined in include/mrpc.h:98
RPC_DB_GET_PATH
#define RPC_DB_GET_PATH 11209
Defined in include/mrpc.h:62
RPC_DB_GET_RECORD
#define RPC_DB_GET_RECORD 11220
Defined in include/mrpc.h:71
RPC_DB_GET_RECORD_SIZE
#define RPC_DB_GET_RECORD_SIZE 11219
Defined in include/mrpc.h:70
RPC_DB_GET_VALUE
#define RPC_DB_GET_VALUE 11206
Defined in include/mrpc.h:59
RPC_DB_LOAD
#define RPC_DB_LOAD 11225
Defined in include/mrpc.h:76
RPC_DB_NOTIFY_CLIENTS_ARRAY
#define RPC_DB_NOTIFY_CLIENTS_ARRAY 11247
Defined in include/mrpc.h:97
RPC_DB_OPEN_DATABASE
#define RPC_DB_OPEN_DATABASE 11200
Defined in include/mrpc.h:53
RPC_DB_REMOVE_OPEN_RECORD
#define RPC_DB_REMOVE_OPEN_RECORD 11223
Defined in include/mrpc.h:74
RPC_DB_RENAME_KEY
#define RPC_DB_RENAME_KEY 11227
Defined in include/mrpc.h:78
RPC_DB_REORDER_KEY
#define RPC_DB_REORDER_KEY 11229
Defined in include/mrpc.h:80
RPC_DB_SAVE
#define RPC_DB_SAVE 11224
Defined in include/mrpc.h:75
RPC_DB_SET_CLIENT_NAME
#define RPC_DB_SET_CLIENT_NAME 11226
Defined in include/mrpc.h:77
RPC_DB_SET_DATA
#define RPC_DB_SET_DATA 11214
Defined in include/mrpc.h:67
RPC_DB_SET_DATA1
#define RPC_DB_SET_DATA1 11246
Defined in include/mrpc.h:96
RPC_DB_SET_DATA_INDEX
#define RPC_DB_SET_DATA_INDEX 11215
Defined in include/mrpc.h:68
RPC_DB_SET_DATA_INDEX1
#define RPC_DB_SET_DATA_INDEX1 11236
Defined in include/mrpc.h:86
RPC_DB_SET_LINK_DATA
#define RPC_DB_SET_LINK_DATA 11244
Defined in include/mrpc.h:94
RPC_DB_SET_LINK_DATA_INDEX
#define RPC_DB_SET_LINK_DATA_INDEX 11245
Defined in include/mrpc.h:95
RPC_DB_SET_MODE
#define RPC_DB_SET_MODE 11216
Defined in include/mrpc.h:69
RPC_DB_SET_NUM_VALUES
#define RPC_DB_SET_NUM_VALUES 11239
Defined in include/mrpc.h:89
RPC_DB_SET_RECORD
#define RPC_DB_SET_RECORD 11221
Defined in include/mrpc.h:72
RPC_DB_SET_VALUE
#define RPC_DB_SET_VALUE 11205
Defined in include/mrpc.h:58
RPC_EL_SUBMIT
#define RPC_EL_SUBMIT 11400
Defined in include/mrpc.h:113
RPC_ID_EXIT
#define RPC_ID_EXIT 99999
Defined in include/mrpc.h:143
RPC_ID_SHUTDOWN
#define RPC_ID_SHUTDOWN 99998
Defined in include/mrpc.h:142
RPC_ID_WATCHDOG
#define RPC_ID_WATCHDOG 99997
Defined in include/mrpc.h:141
RPC_JRPC
#define RPC_JRPC 18000
Defined in include/mrpc.h:136
RPC_JRPC_CXX
#define RPC_JRPC_CXX 18002
Defined in include/mrpc.h:138
RPC_LOG_REWIND
#define RPC_LOG_REWIND 14000
Defined in include/mrpc.h:123
RPC_MANUAL_TRIG
#define RPC_MANUAL_TRIG 17000
Defined in include/mrpc.h:134
RPC_RC_TRANSITION
#define RPC_RC_TRANSITION 12000
Defined in include/mrpc.h:119
RPC_TEST
#define RPC_TEST 15000
Defined in include/mrpc.h:125
RPC_TEST2
#define RPC_TEST2 15001
Defined in include/mrpc.h:126
RPC_TEST2_CXX
#define RPC_TEST2_CXX 15002
Defined in include/mrpc.h:127
RPC_TEST3_CXX
#define RPC_TEST3_CXX 15003
Defined in include/mrpc.h:128
RPC_TEST4_CXX
#define RPC_TEST4_CXX 15004
Defined in include/mrpc.h:129
Midas RPC_LIST
Functions
rpc_get_internal_list
RPC_LIST *rpc_get_internal_list(INT flag)
Declared in include/msystem.h:568, defined in src/mrpc.cxx:785
JSON-RPC Functions
Classes
MJSO
class MJSO : public MJsonNode
MIDAS JSON Schema Objects for documenting RPC calls.
Typical use:
static MJsonNode* js_cm_exist(const MJsonNode* params) { if (!params) { MJSO* doc = MJSO::I(); doc->D("calls MIDAS cm_exist() to check if given MIDAS program is running"); doc->P("name", MJSON_STRING, "name of the program, corresponding to ODB /Programs/name"); doc->P("unique?", MJSON_BOOL, "bUnique argument to cm_exist()"); doc->R("status", MJSON_INT, "return status of cm_exist()"); return doc; } ... rpc function body }
Defined in include/mjsonrpc.h:58
Methods
Add
void Add(const char* name, int mjson_type, const char* description)
Declared in include/mjsonrpc.h:82, defined in src/mjsonrpc.cxx:360
AddArray
MJSO*AddArray(const char* name, const char* description)
Declared in include/mjsonrpc.h:84, defined in src/mjsonrpc.cxx:398
AddObject
MJSO*AddObject(const char* name, const char* description)
Declared in include/mjsonrpc.h:83, defined in src/mjsonrpc.cxx:389
AddToSchema
protected
void AddToSchema(MJsonNode* s, const char* name)
Declared in include/mjsonrpc.h:71, defined in src/mjsonrpc.cxx:266
D
void D(const char* description)
Declared in include/mjsonrpc.h:75, defined in src/mjsonrpc.cxx:307
I
static
static MJSO*I()
Declared in include/mjsonrpc.h:74, defined in src/mjsonrpc.cxx:302
MakeArraySchema
staticprotected
static MJSO*MakeArraySchema(const char* description)
constructor for array schema
Declared in include/mjsonrpc.h:70, defined in src/mjsonrpc.cxx:247
MakeObjectSchema
staticprotected
static MJSO*MakeObjectSchema(const char* description)
constructor for object schema
Declared in include/mjsonrpc.h:69, defined in src/mjsonrpc.cxx:234
MJSO
protected
MJSO()
ctor
Declared in include/mjsonrpc.h:87, defined in src/mjsonrpc.cxx:407
P
void P(const char* name, int mjson_type, const char* description)
Declared in include/mjsonrpc.h:80, defined in src/mjsonrpc.cxx:344
PA
MJSO*PA(const char* description)
Declared in include/mjsonrpc.h:78, defined in src/mjsonrpc.cxx:330
Params
MJSO*Params()
Declared in include/mjsonrpc.h:76, defined in src/mjsonrpc.cxx:312
R
void R(const char* name, int mjson_type, const char* description)
Declared in include/mjsonrpc.h:81, defined in src/mjsonrpc.cxx:352
RA
MJSO*RA(const char* description)
Declared in include/mjsonrpc.h:79, defined in src/mjsonrpc.cxx:337
Result
MJSO*Result()
Declared in include/mjsonrpc.h:77, defined in src/mjsonrpc.cxx:321
Attributes
items
protected
MJsonNode *items
Defined in include/mjsonrpc.h:63
params
protected
MJSO* params
Defined in include/mjsonrpc.h:65
properties
protected
MJsonNode *properties
Defined in include/mjsonrpc.h:61
required
protected
MJsonNode *required
Defined in include/mjsonrpc.h:62
result
protected
MJSO* result
Defined in include/mjsonrpc.h:66
Type definitions
mjsonrpc_handler_t
typedef MJsonNode* (mjsonrpc_handler_t)(const MJsonNode* params)
Defined in include/mjsonrpc.h:18
Functions
mjsonrpc_add_handler
void mjsonrpc_add_handler(const char* method, mjsonrpc_handler_t *handler, bool needs_locking = false)
Declared in include/mjsonrpc.h:24, defined in src/mjsonrpc.cxx:4985
mjsonrpc_decode_post_data
MJsonNode*mjsonrpc_decode_post_data(const char* post_data)
printf("mjsonrpc call, data [%s]\n", post_data);
Declared in include/mjsonrpc.h:37, defined in src/mjsonrpc.cxx:5614
mjsonrpc_exit
void mjsonrpc_exit()
Declared in include/mjsonrpc.h:25, defined in src/mjsonrpc.cxx:5090
mjsonrpc_get_param
const MJsonNode*mjsonrpc_get_param(const MJsonNode* params, const char* name, MJsonNode** error)
Declared in include/mjsonrpc.h:35, defined in src/mjsonrpc.cxx:182
mjsonrpc_get_schema
MJsonNode*mjsonrpc_get_schema()
Declared in include/mjsonrpc.h:29, defined in src/mjsonrpc.cxx:5128
mjsonrpc_init
void mjsonrpc_init()
Declared in include/mjsonrpc.h:22, defined in src/mjsonrpc.cxx:4998
mjsonrpc_make_error
MJsonNode*mjsonrpc_make_error(int code, const char* message, const char* data)
Declared in include/mjsonrpc.h:32, defined in src/mjsonrpc.cxx:127
mjsonrpc_make_result
Note: this function has 2 different signatures.
mjsonrpc_make_result
MJsonNode*mjsonrpc_make_result(MJsonNode* node)
Declared in include/mjsonrpc.h:33, defined in src/mjsonrpc.cxx:139
mjsonrpc_make_result
MJsonNode*mjsonrpc_make_result(const char* name, MJsonNode* value, const char* name2 = NULL, MJsonNode* value2 = NULL, const char* name3 = NULL, MJsonNode* value3 = NULL)
Declared in include/mjsonrpc.h:34, defined in src/mjsonrpc.cxx:146
mjsonrpc_schema_to_text
std::string mjsonrpc_schema_to_text(const MJsonNode *schema)
Declared in include/mjsonrpc.h:30, defined in src/mjsonrpc.cxx:5438
mjsonrpc_set_std_mutex
void mjsonrpc_set_std_mutex(void* mutex)
Declared in include/mjsonrpc.h:27, defined in src/mjsonrpc.cxx:4993
mjsonrpc_user_init
void mjsonrpc_user_init()
Declared in include/mjsonrpc.h:23, defined in src/mjsonrpc_user.cxx:116
Variables
mjsonrpc_debug
extern
int mjsonrpc_debug = 0
in mjsonrpc.h
Declared in include/mjsonrpc.h:20, defined in src/mjsonrpc.cxx:116
JSON documents (MJsonNode)
JSON-RPC methods written in C++ receive their parameters, and build their replies, as MJsonNode objects (mjson/mjson.h). See mjson (JSON documents) for the full reference.