MIDAS
Loading...
Searching...
No Matches
msystem.h
Go to the documentation of this file.
1/********************************************************************\
2
3 Name: MSYSTEM.H
4 Created by: Stefan Ritt
5
6 Contents: Function declarations and constants for internal
7 routines
8
9 $Id$
10
11\********************************************************************/
12
13#ifndef _MSYSTEM_H
14#define _MSYSTEM_H
15
29#ifndef DOXYGEN_SHOULD_SKIP_THIS
30
31#include "midasinc.h"
32#include <string> // std::string
33#include <mutex> // std::mutex
34
36#endif /* DOXYGEN_SHOULD_SKIP_THIS */
37
45#define DRI_16 (1<<0)
46#define DRI_32 (1<<1)
47#define DRI_64 (1<<2)
48#define DRI_LITTLE_ENDIAN (1<<3)
49#define DRI_BIG_ENDIAN (1<<4)
50#define DRF_IEEE (1<<5)
51#define DRF_G_FLOAT (1<<6)
52//#define DR_ASCII (1<<7) /**< - */
53
/* end of msdefineh */
56
61/* Byte and Word swapping big endian <-> little endian */
64#ifndef WORD_SWAP
65#define WORD_SWAP(x) { BYTE _tmp; \
66 _tmp= *((BYTE *)(x)); \
67 *((BYTE *)(x)) = *(((BYTE *)(x))+1); \
68 *(((BYTE *)(x))+1) = _tmp; }
69#endif
70
73#ifndef DWORD_SWAP
74#define DWORD_SWAP(x) { BYTE _tmp; \
75 _tmp= *((BYTE *)(x)); \
76 *((BYTE *)(x)) = *(((BYTE *)(x))+3); \
77 *(((BYTE *)(x))+3) = _tmp; \
78 _tmp= *(((BYTE *)(x))+1); \
79 *(((BYTE *)(x))+1) = *(((BYTE *)(x))+2); \
80 *(((BYTE *)(x))+2) = _tmp; }
81#endif
82
85#ifndef QWORD_SWAP
86#define QWORD_SWAP(x) { BYTE _tmp; \
87 _tmp= *((BYTE *)(x)); \
88 *((BYTE *)(x)) = *(((BYTE *)(x))+7); \
89 *(((BYTE *)(x))+7) = _tmp; \
90 _tmp= *(((BYTE *)(x))+1); \
91 *(((BYTE *)(x))+1) = *(((BYTE *)(x))+6); \
92 *(((BYTE *)(x))+6) = _tmp; \
93 _tmp= *(((BYTE *)(x))+2); \
94 *(((BYTE *)(x))+2) = *(((BYTE *)(x))+5); \
95 *(((BYTE *)(x))+5) = _tmp; \
96 _tmp= *(((BYTE *)(x))+3); \
97 *(((BYTE *)(x))+3) = *(((BYTE *)(x))+4); \
98 *(((BYTE *)(x))+4) = _tmp; }
99#endif
100
/* end of msmacroh */
103
110#define MESSAGE_BUFFER_SIZE 100000
111#define MESSAGE_BUFFER_NAME "SYSMSG"
112//#define MAX_RPC_CONNECTION 64 /**< server/client connections */
113#define MAX_STRING_LENGTH 256
114#define NET_BUFFER_SIZE (8*1024*1024)
116/*------------------------------------------------------------------*/
117/* flag for conditional compilation of debug messages */
118#undef DEBUG_MSG
119
120/* flag for local routines (not for pure network clients) */
121#if !defined ( OS_MSDOS ) && !defined ( OS_VXWORKS )
122#define LOCAL_ROUTINES
123#endif
124
125#if defined(NO_LOCAL_ROUTINES)
126#undef LOCAL_ROUTINES
127#endif
128
129/* YBOS support not in MSDOS */
130#if !defined ( OS_MSDOS )
131#define YBOS_SUPPORT
132#endif
133
136/*------------------------------------------------------------------*/
137
138/* Mapping of function names for socket operations */
139
140#ifdef OS_MSDOS
141
142#define closesocket(s) ::close(s)
143#define ioctlsocket(s,c,d) ::ioctl(s,c,d)
144#define malloc(i) farmalloc(i)
145
146#undef NET_TCP_SIZE
147#define NET_TCP_SIZE 0x7FFF
148
149#endif /* OS_MSDOS */
150
151#ifdef OS_VMS
152
153#define closesocket(s) ::close(s)
154#define ioctlsocket(s,c,d)
155
156#ifndef FD_SET
157typedef struct {
159} fd_set;
160
161#define FD_SET(n, p) ((p)->fds_bits |= (1 << (n)))
162#define FD_CLR(n, p) ((p)->fds_bits &= ~(1 << (n)))
163#define FD_ISSET(n, p) ((p)->fds_bits & (1 << (n)))
164#define FD_ZERO(p) ((p)->fds_bits = 0)
165#endif /* FD_SET */
166
167#endif /* OS_VMS */
168
169/* Missing #defines in VMS */
170
171#ifdef OS_VMS
172
173#define P_WAIT 0
174#define P_NOWAIT 1
175#define P_DETACH 4
176
177#endif
178
179/* and for UNIX */
180
181#ifdef OS_UNIX
182
183#define closesocket(s) ::close(s)
184#define ioctlsocket(s,c,d) ::ioctl(s,c,d)
185#ifndef stricmp
186#define stricmp(s1, s2) strcasecmp(s1, s2)
187#endif
188
189#define P_WAIT 0
190#define P_NOWAIT 1
191#define P_DETACH 4
192
193#endif
194
195// missing off64_t for MAC OSC
196#ifdef __APPLE__
197typedef off_t off64_t; // macOS always has 64-bit off_t
198#define lseek64 lseek
199#define ftruncate64 ftruncate
200#endif
201
205#ifndef FD_SETSIZE
206#define FD_SETSIZE 32
207#endif
208
211/* and VXWORKS */
212
213#ifdef OS_VXWORKS
214
215#define P_NOWAIT 1
216#define closesocket(s) ::close(s)
217#define ioctlsocket(s,c,d) ::ioctl(s,c,d)
218
219#endif
220
224/* missing O_BINARY for non-PC */
225#ifndef O_BINARY
226#define O_BINARY 0
227#define O_TEXT 0
228#endif
229
236/* min/max/abs macros */
237#ifndef MAX
238#define MAX(a,b) (((a) > (b)) ? (a) : (b))
239#endif
240
241#ifndef MIN
242#define MIN(a,b) (((a) < (b)) ? (a) : (b))
243#endif
244
245#ifndef ABS
246#define ABS(a) (((a) < 0) ? -(a) : (a))
247#endif
248
249/* missing tell() for some operating systems */
250#define TELL(fh) lseek(fh, 0, SEEK_CUR)
251
252/* define file truncation */
253#ifdef OS_WINNT
254#define TRUNCATE(fh) chsize(fh, TELL(fh))
255#else
256#define TRUNCATE(fh) ftruncate(fh, TELL(fh))
257#endif
258
261/* missing isnan() & co under Windows */
262#ifdef OS_WINNT
263#include <float.h>
264#define isnan(x) _isnan(x)
265#define isinf(x) (!_finite(x))
266#define strcasecmp _stricmp
267#define strncasecmp _strnicmp
268#define ftruncate(x,y) _chsize(x,y)
269#endif
270
271#define ctime #error ctime() is not thread safe and should not be used in midas programs
272#define localtime #error localtime() is not thread safe and should not be used in midas programs, use localtime_r() instead, do not forget to add a call to tzset()
273#define gmtime #error gmtime() is not thread safe and should not be used in midas programs, use gmtime_r() instead
274#define asctime #error asctime() is not thread safe and should not be used in midas programs, use asctime_r() instead
275
276//#define tzset #error tzset() is not thread safe, please use ss_tzset() instead
277//#define mktime #error mktime() is not thread safe, please use ss_mktime() instead
278
279/*------------------------------------------------------------------*/
280
285/* Network structures */
286
287typedef struct {
288 DWORD routine_id; /* routine ID like ID_BM_xxx */
289 DWORD param_size; /* size in Bytes of parameter */
291
292typedef struct {
294 char param[32]; /* parameter array */
296
/* end of mssectionh */
298
302#define MSG_BM 1
303#define MSG_ODB 2
304#define MSG_CLIENT 3
305#define MSG_SERVER 4
306#define MSG_LISTEN 5
307#define MSG_WATCHDOG 6
308
315/* RPC structures */
316
318 std::string host_name;
319 unsigned short host_port1;
320 unsigned short host_port2;
321 unsigned short host_port3;
322 int debug;
323 std::string experiment;
324 std::string directory;
325 std::string user;
326
327 void clear() {
328 host_name = "";
329 host_port1 = 0;
330 host_port2 = 0;
331 host_port3 = 0;
332 debug = 0;
333 experiment = "";
334 directory = "";
335 user = "";
336 }
337};
338
340 std::string host_name; /* server name */
341 INT port; /* ip port */
342 std::string exp_name; /* experiment to connect */
343 int send_sock; /* tcp send socket */
344 int recv_sock; /* tcp receive socket */
345 int event_sock; /* event socket */
346 std::mutex event_sock_mutex; /* protect event socket against multithreaded access */
347 INT remote_hw_type; /* remote hardware type */
348 INT rpc_timeout; /* in milliseconds */
349
350 void clear() {
351 host_name = "";
352 port = 0;
353 exp_name = "";
354 send_sock = 0;
355 recv_sock = 0;
356 event_sock = 0;
357 remote_hw_type = 0;
358 rpc_timeout = 0;
359 }
361
363 std::string prog_name; /* client program name */
364 std::string host_name; /* client name */
365 BOOL is_mserver = 0; /* this is an mserver server-side connection */
366 int send_sock = 0; /* tcp send socket */
367 int recv_sock = 0; /* tcp receive socket */
368 int event_sock = 0; /* tcp event socket */
369 INT remote_hw_type = 0; /* hardware type */
370 INT watchdog_timeout = 0; /* in milliseconds */
371 DWORD last_activity = 0; /* time of last recv */
372 INT convert_flags = 0; /* convertion flags */
373 char *net_buffer = NULL; /* TCP cache buffer */
374 INT net_buffer_size = 0; /* size of TCP cache */
375 INT write_ptr=0, read_ptr=0, misalign=0; /* pointers for cache */
376 HNDLE odb_handle = 0; /* handle to online datab. */
377 HNDLE client_handle = 0; /* client key handle . */
378
379 void clear() {
380 prog_name = "";
381 host_name = "";
383 send_sock = 0;
384 recv_sock = 0;
385 event_sock = 0;
386 remote_hw_type = 0;
388 last_activity = 0;
389 convert_flags = 0;
391 net_buffer_size = 0;
392 write_ptr = 0;
393 read_ptr = 0;
394 misalign = 0;
395 odb_handle = 0;
396 client_handle = 0;
397 }
398
399 void close();
401
402typedef std::vector<RPC_SERVER_ACCEPTION*> RPC_SERVER_ACCEPTION_LIST;
403
404
405typedef struct {
409
416
417typedef struct {
418 char name[NAME_LENGTH]; /* name of client */
419 INT pid; /* process ID */
420 INT unused0; /* was thread ID */
421 INT unused; /* was thread handle */
422 INT port; /* UDP port for wake up */
423 INT num_open_records; /* number of open records */
424 DWORD last_activity; /* time of last activity */
425 DWORD watchdog_timeout; /* timeout in ms */
426 INT max_index; /* index of last opren record */
427
429
431
432typedef struct {
433 char name[NAME_LENGTH]; /* name of database */
434 INT version; /* database version */
435 INT num_clients; /* no of active clients */
436 INT max_client_index; /* index of last client + 1 */
437 INT key_size; /* size of key area in bytes */
438 INT data_size; /* size of data area in bytes */
439 INT root_key; /* root key offset */
440 INT first_free_key; /* first free key memory */
441 INT first_free_data; /* first free data memory */
442
443 DATABASE_CLIENT client[MAX_CLIENTS]; /* entries for clients */
444
446
447/* Per-process buffer access structure (descriptor) */
448
449typedef struct {
450 char name[NAME_LENGTH]; /* Name of database */
451 BOOL attached; /* TRUE if database is attached */
452 INT client_index; /* index to CLIENT str. in buf. */
453 DATABASE_HEADER *database_header; /* pointer to database header */
454 void *database_data; /* pointer to database data */
455 HNDLE semaphore; /* semaphore handle */
456 INT lock_cnt; /* flag to avoid multiple locks */
457 void* shm_adr; /* address of shared memory */
458 HNDLE shm_size; /* size of shared memory */
459 HNDLE shm_handle; /* handle (id) to shared memory */
460 BOOL protect; /* read/write protection */
461 BOOL protect_read; /* read is permitted */
462 BOOL protect_write; /* write is permitted */
463 MUTEX_T *mutex; /* mutex for multi-thread access */
464 INT timeout; /* timeout for mutex and semaphore */
465 BOOL inside_lock_unlock; /* protection against recursive call to db_lock/unlock */
466
467} DATABASE;
468
469/* Open record descriptor */
470
471typedef struct {
472 HNDLE handle; /* Handle of record base key */
473 HNDLE hDB; /* Handle of record's database */
474 WORD access_mode; /* R/W flags */
475 void *data; /* Pointer to local data */
476 void *copy; /* Pointer of copy to data */
477 INT buf_size; /* Record size in bytes */
478 void (*dispatcher) (INT, INT, void *); /* Pointer to dispatcher func. */
479 void *info; /* addtl. info for dispatcher */
480
482
483/* Watch record descriptor */
484
485typedef struct {
486 HNDLE handle; /* Handle of watched base key */
487 HNDLE hDB; /* Handle of watched database */
488 void (*dispatcher) (INT, INT, INT, void* info); /* Pointer to dispatcher func. */
489 void* info; /* addtl. info for dispatcher */
490} WATCH_LIST;
491
/* end of mssectionh */
494
498/*---- Logging channel information ---------------------------------*/
499
500#define LOG_TYPE_DISK 1
501#define LOG_TYPE_TAPE 2
502#define LOG_TYPE_FTP 3
503#define LOG_TYPE_SFTP 4
504
507#if defined(OS_VXWORKS)
508
509/*---- VxWorks specific taskSpawn arguments ----------------------*/
510
511typedef struct {
512 char name[32];
513 int priority;
514 int options;
515 int stackSize;
516 int arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10;
518
519#endif
520
521/*---- Function declarations ---------------------------------------*/
522
523 /*---- common function ----*/
524 INT EXPRT cm_set_path(const char *path);
525 [[deprecated("Please use the std::string version of this function")]]
526 INT EXPRT cm_get_path(char *path, int path_size);
527 std::string EXPRT cm_get_path();
528 INT EXPRT cm_get_path_string(std::string* path);
531 INT EXPRT cm_msg_log(INT message_type, const char *facility, const char *message);
532 void EXPRT name2c(char *str);
534 std::string EXPRT cm_get_history_path(const char* history_channel);
535
536 /*---- online database ----*/
539 //INT EXPRT db_get_lock_cnt(HNDLE database_handle);
546 INT EXPRT db_set_client_name(HNDLE hDB, const char *client_name);
548 INT EXPRT db_show_mem(HNDLE hDB, char **result, BOOL verbose);
549 INT EXPRT db_get_free_mem(HNDLE hDB, INT *key_size, INT *data_size);
551 //void db_update_last_activity(DWORD actual_time);
553 void db_cleanup2(const char* client_name, int ignore_timeout, DWORD actual_time, const char *who);
554 void db_set_watchdog_params(DWORD timeout);
556
557 /*---- rpc functions -----*/
558 INT rpc_register_listener(int port, RPC_HANDLER func, int *plsock, int *pport);
563 INT EXPRT rpc_server_accept(int sock);
564 INT rpc_client_accept(int sock);
565 INT rpc_client_dispatch(int sock);
567 INT recv_tcp_check(int sock);
570 void EXPRT rpc_client_check(void);
575 const char* EXPRT rpc_get_mserver_path(void);
577
581 /*---- system services ----*/
582 INT ss_shm_open(const char *name, INT size, void **shm_adr, size_t *shm_size, HNDLE *handle, BOOL get_size);
583 INT ss_shm_close(const char *name, void *shm_adr, size_t shm_size, HNDLE handle, INT destroy_flag);
584 INT ss_shm_flush(const char *name, const void *shm_adr, size_t shm_size, HNDLE handle, bool wait_for_thread);
585 INT EXPRT ss_shm_delete(const char *name);
586 INT ss_shm_protect(HNDLE handle, void *shm_adr, size_t shm_size);
587 INT ss_shm_unprotect(HNDLE handle, void **shm_adr, size_t shm_size, BOOL read, BOOL write, const char* caller_name);
588 INT ss_spawnv(INT mode, const char *cmdname, const char* const argv[]);
589 INT ss_shell(int sock);
591 INT EXPRT ss_system(const char *command);
592 INT EXPRT ss_exec(const char *cmd, INT * child_pid);
593 std::string EXPRT ss_replace_env_variables(const std::string& inputPath);
594 std::string EXPRT ss_execs(const char *cmd);
596 INT EXPRT ss_getpid(void);
598 std::string ss_tid_to_string(midas_thread_t thread_id);
604 INT EXPRT ss_mutex_wait_for(MUTEX_T *mutex, INT timeout);
607 bool EXPRT ss_timed_mutex_wait_for_sec(std::timed_mutex& mutex, const char* mutex_name, double timeout_sec);
608 INT ss_alarm(INT millitime, void (*func) (int));
617 INT ss_resume(INT port, const char *message);
618 INT ss_suspend_exit(void);
619 INT ss_exception_handler(void (*func) (void));
621 midas_thread_t EXPRT ss_thread_create(INT(*func) (void *), void *param);
623 INT EXPRT ss_thread_set_name(std::string name);
624 std::string ss_thread_get_name();
627 INT EXPRT ss_timezone(void);
628 INT EXPRT ss_stack_get(char ***string);
629 void EXPRT ss_stack_print(void);
630 void EXPRT ss_stack_history_entry(char *tag);
631 void EXPRT ss_stack_history_dump(char *filename);
632 [[deprecated("Please use the std::string version of this function")]]
633 INT ss_gethostname(char* buffer, int buffer_size);
634 std::string ss_gethostname();
635 BOOL ss_pid_exists(int pid);
636 void ss_kill(int pid);
637 std::string ss_get_executable(void);
638 std::string ss_get_cmdline(void);
639
640 /*---- socket routines ----*/
641 INT EXPRT ss_socket_connect_tcp(const char* hostname, int tcp_port, int* sockp, std::string* error_msg_p);
644 INT EXPRT ss_socket_wait(int sock, int millisec);
645 INT EXPRT ss_socket_get_peer_name(int sock, std::string* host, int* port);
646 INT EXPRT send_tcp(int sock, char *buffer, DWORD buffer_size, INT flags);
647 INT EXPRT recv_tcp(int sock, char *buffer, DWORD buffer_size, INT flags);
648 INT EXPRT recv_tcp2(int sock, char *buffer, int buffer_size, int timeout_ms);
649 INT EXPRT recv_string(int sock, char *buffer, DWORD buffer_size, INT flags);
650 INT EXPRT ss_recv_net_command(int sock, DWORD* routine_id, DWORD* param_size, char **param_ptr, int timeout_ms);
651
652 /*---- mserver event socket ----*/
655
658 /*---- event buffer routines ----*/
666
667 /*---- dual memory event buffer routines ----*/
678
679 /*---- ring buffer routines ----*/
680 int EXPRT rb_set_nonblocking(void);
681 int EXPRT rb_create(int size, int max_event_size, int *ring_buffer_handle);
683 int EXPRT rb_get_wp(int handle, void **p, int millisec);
684 int EXPRT rb_increment_wp(int handle, int size);
685 int EXPRT rb_get_rp(int handle, void **p, int millisec);
686 int EXPRT rb_increment_rp(int handle, int size);
687 int EXPRT rb_get_buffer_level(int handle, int * n_bytes);
688
689 /*---- stop watch ----*/
690 std::chrono::time_point<std::chrono::high_resolution_clock> ss_us_start();
691 unsigned int ss_us_since(std::chrono::time_point<std::chrono::high_resolution_clock> start);
692
693/*---- Include RPC identifiers -------------------------------------*/
694
695#include "mrpc.h"
696
697#endif /* _MSYSTEM_H */
698
699/* emacs
700 * Local Variables:
701 * tab-width: 8
702 * c-basic-offset: 3
703 * indent-tabs-mode: nil
704 * End:
705 */
#define FALSE
Definition cfortran.h:309
#define EXPRT
Definition esone.h:28
INT EXPRT cm_set_path(const char *path)
Definition midas.cxx:1511
INT cm_dispatch_ipc(const char *message, int message_size, int client_socket)
Definition midas.cxx:5407
INT EXPRT cm_get_path_string(std::string *path)
Definition midas.cxx:1559
std::string EXPRT cm_get_path()
Definition midas.cxx:1551
std::string EXPRT cm_get_history_path(const char *history_channel)
Definition midas.cxx:5865
INT cm_delete_client_info(HNDLE hDB, INT pid)
Definition midas.cxx:1866
INT EXPRT cm_set_experiment_name(const char *name)
Definition midas.cxx:1572
unsigned short int WORD
Definition mcstd.h:49
unsigned int DWORD
Definition mcstd.h:51
RPC_LIST EXPRT * rpc_get_internal_list(INT flag)
Definition mrpc.cxx:716
INT() RPC_HANDLER(INT index, void *prpc_param[])
Definition midas.h:922
std::string ss_gethostname()
Definition system.cxx:5784
INT ss_suspend(INT millisec, INT msg)
Definition system.cxx:4615
INT ss_suspend_set_rpc_thread(midas_thread_t thread_id)
Definition system.cxx:4074
INT ss_get_struct_align()
Definition system.cxx:1321
INT ss_suspend_get_odb_port(INT *port)
Definition system.cxx:4399
INT ss_mutex_release(MUTEX_T *mutex)
Definition system.cxx:3229
INT ss_thread_kill(midas_thread_t thread_id)
Definition system.cxx:2455
INT ss_suspend_init_odb_port()
Definition system.cxx:4377
void ss_stack_print()
Definition system.cxx:8088
INT ss_exception_handler(void(*func)(void))
Definition system.cxx:3916
bool ss_event_socket_has_data()
Definition system.cxx:4592
INT ss_shm_flush(const char *name, const void *adr, size_t size, HNDLE handle, bool wait_for_thread)
Definition system.cxx:1178
INT EXPRT ss_thread_set_name(std::string name)
Definition system.cxx:2498
INT ss_semaphore_create(const char *name, HNDLE *semaphore_handle)
Definition system.cxx:2532
INT ss_shm_delete(const char *name)
Definition system.cxx:911
INT recv_tcp2(int sock, char *net_buffer, int buffer_size, int timeout_ms)
Definition system.cxx:5634
INT ss_suspend_set_client_listener(int listen_socket)
Definition system.cxx:4356
INT ss_socket_get_peer_name(int sock, std::string *hostp, int *portp)
Definition system.cxx:5318
INT ss_mutex_delete(MUTEX_T *mutex)
Definition system.cxx:3283
int ss_socket_wait(int sock, INT millisec)
Definition system.cxx:4970
INT ss_suspend_set_server_acceptions(RPC_SERVER_ACCEPTION_LIST *acceptions)
Definition system.cxx:4370
INT ss_getpid(void)
Definition system.cxx:1379
std::chrono::time_point< std::chrono::high_resolution_clock > ss_us_start()
Definition system.cxx:8333
INT ss_suspend_set_client_connection(RPC_SERVER_CONNECTION *connection)
Definition system.cxx:4363
INT ss_mutex_create(MUTEX_T **mutex, BOOL recursive)
Definition system.cxx:3013
INT ss_shell(int sock)
Definition system.cxx:1832
unsigned int ss_us_since(std::chrono::time_point< std::chrono::high_resolution_clock > start)
Definition system.cxx:8338
INT ss_shm_open(const char *name, INT size, void **adr, size_t *shm_size, HNDLE *handle, BOOL get_size)
Definition system.cxx:326
INT recv_string(int sock, char *buffer, DWORD buffer_size, INT millisec)
Definition system.cxx:5471
bool ss_timed_mutex_wait_for_sec(std::timed_mutex &mutex, const char *mutex_name, double timeout_sec)
Definition system.cxx:3337
INT ss_semaphore_release(HNDLE semaphore_handle)
Definition system.cxx:2853
midas_thread_t ss_thread_create(INT(*thread_func)(void *), void *param)
Definition system.cxx:2382
void ss_stack_history_entry(char *tag)
Definition system.cxx:8100
std::string ss_execs(const char *cmd)
Definition system.cxx:2309
INT ss_stack_get(char ***string)
Definition system.cxx:8072
std::string ss_get_cmdline(void)
Definition system.cxx:1519
std::string ss_tid_to_string(midas_thread_t thread_id)
Definition system.cxx:1643
void ss_stack_history_dump(char *filename)
Definition system.cxx:8122
int rpc_flush_event_socket(int timeout_msec)
Definition midas.cxx:16158
std::string ss_replace_env_variables(const std::string &inputPath)
Definition system.cxx:2284
INT ss_daemon_init(BOOL keep_stdout)
Definition system.cxx:2073
INT ss_alarm(INT millitime, void(*func)(int))
Definition system.cxx:3809
INT ss_suspend_exit()
Definition system.cxx:4298
INT recv_tcp(int sock, char *net_buffer, DWORD buffer_size, INT flags)
Definition system.cxx:5526
INT ss_resume(INT port, const char *message)
Definition system.cxx:4916
midas_thread_t ss_gettid(void)
Definition system.cxx:1591
INT ss_semaphore_delete(HNDLE semaphore_handle, INT destroy_flag)
Definition system.cxx:2941
INT ss_get_struct_padding()
Definition system.cxx:1347
INT ss_socket_connect_tcp(const char *hostname, int tcp_port, int *sockp, std::string *error_msg_p)
Definition system.cxx:5039
INT ss_semaphore_wait_for(HNDLE semaphore_handle, DWORD timeout_millisec)
Definition system.cxx:2711
INT ss_socket_listen_tcp(bool listen_localhost, int tcp_port, int *sockp, int *tcp_port_p, std::string *error_msg_p)
Definition system.cxx:5134
INT ss_exec(const char *command, INT *pid)
Definition system.cxx:2204
INT ss_shm_unprotect(HNDLE handle, void **adr, size_t shm_size, BOOL read, BOOL write, const char *caller_name)
Definition system.cxx:1062
std::string EXPRT ss_thread_get_name()
Definition system.cxx:2516
void ss_kill(int pid)
Definition system.cxx:1473
BOOL ss_existpid(INT pid)
Definition system.cxx:2140
INT ss_spawnv(INT mode, const char *cmdname, const char *const argv[])
Definition system.cxx:1702
INT ss_suspend_get_buffer_port(midas_thread_t thread_id, INT *port)
Definition system.cxx:4425
INT ss_socket_close(int *sockp)
Definition system.cxx:5303
INT ss_recv_net_command(int sock, DWORD *routine_id, DWORD *param_size, char **param_ptr, int timeout_ms)
Definition system.cxx:5707
INT ss_suspend_set_server_listener(int listen_socket)
Definition system.cxx:4349
INT ss_shm_close(const char *name, void *adr, size_t shm_size, HNDLE handle, INT destroy_flag)
Definition system.cxx:757
INT send_tcp(int sock, char *buffer, DWORD buffer_size, INT flags)
Definition system.cxx:5357
BOOL ss_pid_exists(int pid)
Definition system.cxx:1442
std::string ss_get_executable(void)
Definition system.cxx:1490
INT ss_timezone()
Definition system.cxx:3652
INT ss_system(const char *command)
Definition system.cxx:2188
INT ss_shm_protect(HNDLE handle, void *adr, size_t shm_size)
Definition system.cxx:1005
INT ss_mutex_wait_for(MUTEX_T *mutex, INT timeout)
Definition system.cxx:3109
INT EXPRT cm_msg_log(INT message_type, const char *facility, const char *message)
Definition midas.cxx:676
std::vector< RPC_SERVER_ACCEPTION * > RPC_SERVER_ACCEPTION_LIST
Definition msystem.h:402
struct rpc_server_acception_struct RPC_SERVER_ACCEPTION
struct rpc_server_connection_struct RPC_SERVER_CONNECTION
INT EXPRT db_flush_database(HNDLE hDB)
Definition odb.cxx:2273
INT db_check_client(HNDLE hDB, HNDLE hKeyClient)
Definition odb.cxx:3064
void db_cleanup(const char *who, DWORD actual_time, BOOL wrong_interval)
Definition odb.cxx:2832
INT EXPRT db_show_mem(HNDLE hDB, char **result, BOOL verbose)
Definition odb.cxx:672
INT EXPRT db_lock_database(HNDLE database_handle)
Definition odb.cxx:2460
INT db_delete_key1(HNDLE hDB, HNDLE hKey, INT level, BOOL follow_links)
Definition odb.cxx:3674
INT EXPRT db_unlock_database(HNDLE database_handle)
Definition odb.cxx:2582
INT db_allow_write_locked(DATABASE *p, const char *caller_name)
Definition odb.cxx:2553
INT db_close_all_records(void)
Definition odb.cxx:13524
void EXPRT name2c(char *str)
Definition odb.cxx:9102
INT db_update_record_local(INT hDB, INT hKeyRoot, INT hKey, int index)
Definition odb.cxx:13562
void db_set_watchdog_params(DWORD timeout)
Definition odb.cxx:2981
INT db_update_record_mserver(INT hDB, INT hKeyRoot, INT hKey, int index, int client_socket)
Definition odb.cxx:13609
void db_cleanup2(const char *client_name, int ignore_timeout, DWORD actual_time, const char *who)
Definition odb.cxx:2902
INT EXPRT db_set_client_name(HNDLE hDB, const char *client_name)
Definition odb.cxx:2407
INT EXPRT db_notify_clients(HNDLE hDB, HNDLE hKey, int index, BOOL bWalk)
Definition odb.cxx:12602
INT EXPRT db_set_lock_timeout(HNDLE database_handle, int timeout_millisec)
Definition odb.cxx:2669
INT EXPRT db_get_free_mem(HNDLE hDB, INT *key_size, INT *data_size)
Definition odb.cxx:788
int EXPRT rb_get_rp(int handle, void **p, int millisec)
Definition midas.cxx:17590
int EXPRT rb_delete(int ring_buffer_handle)
Definition midas.cxx:17412
int EXPRT rb_get_wp(int handle, void **p, int millisec)
Definition midas.cxx:17449
int EXPRT rb_increment_rp(int handle, int size)
Definition midas.cxx:17652
int EXPRT rb_set_nonblocking(void)
Definition midas.cxx:17317
int EXPRT rb_increment_wp(int handle, int size)
Definition midas.cxx:17524
int EXPRT rb_create(int size, int max_event_size, int *ring_buffer_handle)
Definition midas.cxx:17358
int EXPRT rb_get_buffer_level(int handle, int *n_bytes)
Definition midas.cxx:17707
INT EXPRT rpc_get_opt_tcp_size(void)
Definition midas.cxx:13894
INT rpc_server_callback(struct callback_addr *callback)
Definition midas.cxx:15724
INT recv_tcp_check(int sock)
Definition midas.cxx:14379
INT rpc_server_receive_rpc(int idx, RPC_SERVER_ACCEPTION *sa)
Definition midas.cxx:15893
const char *EXPRT rpc_get_mserver_path(void)
Definition midas.cxx:13073
RPC_SERVER_ACCEPTION * rpc_get_mserver_acception(void)
Definition midas.cxx:11535
INT rpc_deregister_functions(void)
Definition midas.cxx:11892
INT EXPRT rpc_set_mserver_path(const char *mserver_path)
Definition midas.cxx:13086
void EXPRT rpc_client_check(void)
Definition midas.cxx:12292
INT rpc_server_disconnect(void)
Definition midas.cxx:12727
INT rpc_client_accept(int sock)
Definition midas.cxx:15620
INT EXPRT rpc_set_opt_tcp_size(INT tcp_size)
Definition midas.cxx:13886
INT rpc_register_listener(int port, RPC_HANDLER func, int *plsock, int *pport)
Definition midas.cxx:14601
INT rpc_server_receive_event(int idx, RPC_SERVER_ACCEPTION *sa, int timeout_msec)
Definition midas.cxx:16003
INT EXPRT rpc_server_accept(int sock)
Definition midas.cxx:15363
INT rpc_client_dispatch(int sock)
Definition midas.cxx:11967
INT rpc_check_channels(void)
Definition midas.cxx:16276
INT EXPRT rpc_get_convert_flags(void)
Definition midas.cxx:13052
void ** info
Definition fesimdaq.cxx:41
HNDLE hKey
INT index
Definition mana.cxx:271
char param[10][256]
Definition mana.cxx:250
HNDLE hDB
main ODB handle
Definition mana.cxx:207
BOOL verbose
Definition mana.cxx:255
DWORD actual_time
Definition mfe.cxx:37
INT max_event_size
Definition mfed.cxx:30
#define MAX_CLIENTS
Definition midas.h:274
INT HNDLE
Definition midas.h:132
INT midas_thread_t
Definition midas.h:179
DWORD BOOL
Definition midas.h:105
int INT
Definition midas.h:129
#define MAX_OPEN_RECORDS
Definition midas.h:276
INT MUTEX_T
Definition midas.h:237
#define NAME_LENGTH
Definition midas.h:272
#define message(type, str)
#define read(n, a, f)
#define write(n, a, f, d)
#define name(x)
Definition midas_macro.h:24
struct callback_addr callback
Definition mserver.cxx:22
int event_size
Definition msysmon.cxx:527
INT EXPRT eb_free_buffer(void)
INT EXPRT dm_area_send(void)
EVENT_HEADER EXPRT * dm_pointer_get(void)
INT EXPRT dm_buffer_create(INT size, INT usize)
BOOL EXPRT dm_area_full(void)
INT EXPRT eb_increment_pointer(INT buffer_handle, INT event_size)
INT EXPRT dm_buffer_release(void)
INT EXPRT dm_area_flush(void)
INT EXPRT dm_async_area_send(void *pointer)
INT EXPRT dm_task(void *pointer)
INT EXPRT eb_send_events(BOOL send_all)
EVENT_HEADER EXPRT * eb_get_pointer(void)
INT EXPRT eb_create_buffer(INT size)
BOOL EXPRT eb_buffer_full(void)
DWORD EXPRT dm_buffer_time_get(void)
INT EXPRT dm_pointer_increment(INT buffer_handle, INT event_size)
BOOL EXPRT eb_buffer_empty(void)
char str[256]
Definition odbhist.cxx:33
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
Definition rmidas.h:24
DWORD last_activity
Definition msystem.h:424
DWORD watchdog_timeout
Definition msystem.h:425
INT num_open_records
Definition msystem.h:423
INT first_free_data
Definition msystem.h:441
INT max_client_index
Definition msystem.h:436
BOOL protect
Definition msystem.h:460
void * database_data
Definition msystem.h:454
INT timeout
Definition msystem.h:464
HNDLE shm_size
Definition msystem.h:458
MUTEX_T * mutex
Definition msystem.h:463
BOOL protect_read
Definition msystem.h:461
INT lock_cnt
Definition msystem.h:456
INT client_index
Definition msystem.h:452
HNDLE semaphore
Definition msystem.h:455
HNDLE shm_handle
Definition msystem.h:459
DATABASE_HEADER * database_header
Definition msystem.h:453
BOOL attached
Definition msystem.h:451
BOOL protect_write
Definition msystem.h:462
BOOL inside_lock_unlock
Definition msystem.h:465
void * shm_adr
Definition msystem.h:457
INT next_free
Definition msystem.h:407
NET_COMMAND_HEADER header
Definition msystem.h:293
WORD flags
Definition msystem.h:413
WORD access_mode
Definition msystem.h:412
WORD access_mode
Definition msystem.h:474
void * info
Definition msystem.h:479
INT buf_size
Definition msystem.h:477
HNDLE handle
Definition msystem.h:472
void * data
Definition msystem.h:475
void * copy
Definition msystem.h:476
HNDLE hDB
Definition msystem.h:473
HNDLE handle
Definition msystem.h:486
HNDLE hDB
Definition msystem.h:487
void * info
Definition msystem.h:489
unsigned short host_port1
Definition msystem.h:319
std::string user
Definition msystem.h:325
void clear()
Definition msystem.h:327
unsigned short host_port2
Definition msystem.h:320
std::string experiment
Definition msystem.h:323
unsigned short host_port3
Definition msystem.h:321
std::string directory
Definition msystem.h:324
std::string host_name
Definition msystem.h:318