MIDAS
Loading...
Searching...
No Matches
rpc_srvr.cxx
Go to the documentation of this file.
1/********************************************************************\
2
3 Name: rpc_srvr.c
4 Created by: Stefan Ritt
5
6 Contents: A simple RPC server program. Implements a function
7 rpc_test, which simply doubles some parameters.
8 This function can be calles remotely by rpc_clnt.
9
10
11 $Id$
12
13\********************************************************************/
14
15#include "midas.h"
16#include <stdio.h>
17
18#define RPC_MYTEST RPC_MIN_ID
19
21
22 {RPC_MYTEST, "rpc_mytest",
24 ,
26 ,
28 ,
30 ,
32 ,
34 ,
36 ,
38 ,
40 ,
42 ,
43 {0}
44 }
45 }
46 ,
47
48 {0}
49
50};
51
52/*------------------------------------------------------------------*/
53
54/* just a small test routine which doubles numbers */
55INT rpc_mytest(BYTE b, WORD w, INT i, float f, double d,
56 BYTE * b1, WORD * w1, INT * i1, float *f1, double *d1)
57{
58 *b1 = b * 2;
59 *w1 = w * 2;
60 *i1 = i * 2;
61 *f1 = f * 2;
62 *d1 = d * 2;
63
64 return 1;
65}
66
67/* this dispatchers forwards RPC calls to the destination functions */
69{
70 INT status = 1;
71
72 switch (index) {
73 case RPC_MYTEST:
74 status = rpc_mytest(CBYTE(0), CWORD(1), CINT(2), CFLOAT(3), CDOUBLE(4),
75 CPBYTE(5), CPWORD(6), CPINT(7), CPFLOAT(8), CPDOUBLE(9));
76 break;
77
78 default:
79 cm_msg(MERROR, "rpc_dispatch", "received unrecognized command");
80 }
81
82 return status;
83}
84
85/*------------------------------------------------------------------*/
86
87int main()
88{
89 INT status;
90
91 /* register RPC server under port 1750 */
93 if (status != RPC_SUCCESS) {
94 printf("Cannot start server");
95 return 0;
96 }
97
98 /* Register function list. Calls get forwarded to rpc_dispatch */
100
101 /* Print debugging messages */
102 rpc_set_debug((void (*)(const char *)) puts, 0);
103
104 /* Server loop */
105 while (cm_yield(1000) != RPC_SHUTDOWN);
106
107 /* Shutdown server */
109
110 return 1;
111}
INT cm_yield(INT millisec)
Definition midas.cxx:5642
#define RPC_SHUTDOWN
Definition midas.h:707
#define RPC_SUCCESS
Definition midas.h:698
unsigned short int WORD
Definition mcstd.h:49
unsigned char BYTE
Definition mcstd.h:48
#define TID_DOUBLE
Definition midas.h:343
#define TID_INT32
Definition midas.h:339
#define TID_UINT8
Definition midas.h:328
#define MERROR
Definition midas.h:559
#define TID_UINT32
Definition midas.h:337
#define TID_UINT16
Definition midas.h:333
#define TID_FLOAT
Definition midas.h:341
INT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format,...)
Definition midas.cxx:915
INT rpc_register_server(int port, int *plsock, int *pport)
Definition midas.cxx:14538
INT rpc_register_functions(const RPC_LIST *new_list, RPC_HANDLER func)
Definition midas.cxx:11827
INT rpc_server_shutdown(void)
Definition midas.cxx:16183
INT rpc_set_debug(void(*func)(const char *), INT mode)
Definition midas.cxx:13134
INT index
Definition mana.cxx:271
INT i
Definition mdump.cxx:32
#define CFLOAT(_i)
Definition midas.h:1640
#define CINT(_i)
Definition midas.h:1622
#define RPC_OUT
Definition midas.h:1581
#define RPC_IN
Definition midas.h:1580
#define CDOUBLE(_i)
Definition midas.h:1643
int INT
Definition midas.h:129
#define CPWORD(_i)
Definition midas.h:1626
#define CPINT(_i)
Definition midas.h:1623
#define CWORD(_i)
Definition midas.h:1625
#define CBYTE(_i)
Definition midas.h:1616
#define CPFLOAT(_i)
Definition midas.h:1641
#define CPBYTE(_i)
Definition midas.h:1617
#define CPDOUBLE(_i)
Definition midas.h:1644
DWORD status
Definition odbhist.cxx:39
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24
INT rpc_mytest(BYTE b, WORD w, INT i, float f, double d, BYTE *b1, WORD *w1, INT *i1, float *f1, double *d1)
Definition rpc_srvr.cxx:55
INT rpc_dispatch(INT index, void *prpc_param[])
Definition rpc_srvr.cxx:68
RPC_LIST rpc_list[]
Definition rpc_srvr.cxx:20
#define RPC_MYTEST
Definition rpc_srvr.cxx:18
int main()
Definition rpc_srvr.cxx:87
double d
Definition system.cxx:1311