MIDAS
Loading...
Searching...
No Matches
midas.h
Go to the documentation of this file.
1/********************************************************************\
2
3 Name: MIDAS.H
4 Created by: Stefan Ritt
5
6 Contents: Type definitions and function declarations needed
7 for MIDAS applications
8
9
10 $Id$
11
12\********************************************************************/
13
14#ifndef _MIDAS_H_
15#define _MIDAS_H_
16
17/*------------------------------------------------------------------*/
18
33/* has to be changed whenever binary ODB format changes */
34#define DATABASE_VERSION 3
35
36/* MIDAS version number which will be incremented for every release */
37#define MIDAS_VERSION "2.1"
38
39// turn deprecated warning off until we replaced all sprintf with snprintf
40#ifdef __clang__
41#pragma clang diagnostic ignored "-Wdeprecated-declarations"
42#endif
43
44/*------------------------------------------------------------------*/
45
46/* find out on which operating system we are running */
47
48#if defined( VAX ) || defined( __VMS )
49#define OS_VMS
50#endif
51
52#if defined( _MSC_VER )
53#ifndef OS_WINNT
54#define OS_WINNT
55#endif
56#endif
57
58#if defined( __MSDOS__ )
59#define OS_MSDOS
60#endif
61
62#if defined ( vxw )
63#ifndef OS_VXWORKS
64#define OS_VXWORKS
65#undef OS_UNIX
66#endif
67#endif
68
69#if defined ( __linux__ )
70#ifndef OS_LINUX
71#define OS_LINUX
72#endif
73#endif
74
75#if defined ( __APPLE__ )
76#ifndef OS_DARWIN
77#define OS_LINUX
78#define OS_DARWIN
79#endif
80#endif
81
82#if defined(OS_LINUX) || defined(OS_OSF1) || defined(OS_ULTRIX) || defined(OS_FREEBSD) || defined(OS_SOLARIS) || defined(OS_IRIX) || defined(OS_DARWIN)
83#define OS_UNIX
84#endif
85
86#if !defined(OS_IRIX) && !defined(OS_VMS) && !defined(OS_MSDOS) && !defined(OS_UNIX) && !defined(OS_VXWORKS) && !defined(OS_WINNT)
87#error MIDAS cannot be used on this operating system
88#endif
89
90/*------------------------------------------------------------------*/
91
92/* Define basic data types */
93
94#ifndef MIDAS_TYPE_DEFINED
95#define MIDAS_TYPE_DEFINED
96
97typedef unsigned char BYTE;
98typedef unsigned short int WORD;
99#ifndef OS_WINNT // Windows defines already DWORD
100typedef unsigned int DWORD;
101#endif
102
103#ifndef OS_WINNT
104#ifndef OS_VXWORKS
105typedef DWORD BOOL;
106#endif
107#endif
108
109#endif /* MIDAS_TYPE_DEFINED */
110
111/*
112 Definitions depending on integer types:
113
114 Note that the alpha chip uses 32 bit integers by default.
115 Therefore always use 'INT' instead 'int'.
116*/
117#if defined(OS_MSDOS)
118typedef long int INT;
119#elif defined( OS_WINNT )
120
121/* INT predefined in windows.h */
122#ifndef _INC_WINDOWS
123#include <windows.h>
124#endif
125
126#undef DB_TRUNCATED
127
128#else
129typedef int INT;
130#endif
131
132typedef INT HNDLE;
133
134/* define integer types with explicit widths */
135#ifndef NO_INT_TYPES_DEFINE
136typedef unsigned char UINT8;
137typedef char INT8;
138typedef unsigned short UINT16;
139typedef short INT16;
140typedef unsigned int UINT32;
141typedef int INT32;
142typedef unsigned long long UINT64;
143typedef long long INT64;
144#endif
145
146/* Include vxWorks for BOOL definition */
147#ifdef OS_VXWORKS
148#ifndef __INCvxWorksh
149#include <vxWorks.h>
150#endif
151#endif
152
153/*
154 Conversion from pointer to interger and back.
155
156 On 64-bit systems, pointers are long ints
157 On 32-bit systems, pointers are int
158
159 Never use direct casting, since the code might then
160 not be portable between 32-bit and 64-bit systems
161
162*/
163#if defined(__alpha) || defined(_LP64)
164#define POINTER_T long int
165#else
166#define POINTER_T int
167#endif
168
169/* define old PTYPE for compatibility with old code */
170#define PTYPE POINTER_T
171
172/* need system-dependant thread type */
173#if defined(OS_WINNT)
174typedef HANDLE midas_thread_t;
175#elif defined(OS_UNIX)
176#include <pthread.h>
178#else
180#endif
181
182#define TRUE 1
183#define FALSE 0
184
185/* directory separator */
186#if defined(OS_MSDOS) || defined(OS_WINNT)
187#define DIR_SEPARATOR '\\'
188#define DIR_SEPARATOR_STR "\\"
189#elif defined(OS_VMS)
190#define DIR_SEPARATOR ']'
191#define DIR_SEPARATOR_STR "]"
192#else
193#define DIR_SEPARATOR '/'
194#define DIR_SEPARATOR_STR "/"
195#endif
196
197/* inline functions */
198#if defined( _MSC_VER )
199#define INLINE __inline
200#elif defined(__GNUC__)
201#ifndef INLINE
202#define INLINE __inline__
203#endif
204#else
205#define INLINE
206#endif
207
208/* large file (>2GB) support */
209#ifndef _LARGEFILE64_SOURCE
210#define O_LARGEFILE 0
211#endif
212
213/* disable "deprecated" warning */
214#if defined( _MSC_VER )
215#pragma warning( disable: 4996)
216#endif
217
218#if defined __GNUC__
219#define MATTRPRINTF(a, b) __attribute__ ((format (printf, a, b)))
220#else
221#define MATTRPRINTF(a, b)
222#endif
223
224/* mutex definitions */
225#if defined(OS_WINNT)
226#ifndef MUTEX_T_DEFINED
227typedef HANDLE MUTEX_T;
228#define MUTEX_T_DEFINED
229#endif
230#elif defined(OS_LINUX)
231#ifndef MUTEX_T_DEFINED
233#define MUTEX_T_DEFINED
234#endif
235#else
236#ifndef MUTEX_T_DEFINED
237typedef INT MUTEX_T;
238#define MUTEX_T_DEFINED
239#endif
240#endif
241
242#include <mutex>
243#include <atomic>
244#include <vector>
245#include <string>
246typedef std::vector<std::string> STRING_LIST;
247
248class MJsonNode; // forward declaration from mjson.h
249
250/*------------------------------------------------------------------*/
251
252/* Definition of implementation specific constants */
253
254#define DEFAULT_MAX_EVENT_SIZE (4*1024*1024)
255#define DEFAULT_BUFFER_SIZE (32*1024*1024)
257#define MIN_WRITE_CACHE_SIZE (10000000)
258#define MAX_WRITE_CACHE_SIZE_DIV (3)
259#define MAX_WRITE_CACHE_EVENT_SIZE_DIV (10)
261#ifdef OS_WINNT
262#define TAPE_BUFFER_SIZE 0x100000
263#else
264#define TAPE_BUFFER_SIZE 0x8000
265#endif
266#define NET_TCP_SIZE 0xFFFF
267#define OPT_TCP_SIZE 8192
269#define EVENT_BUFFER_NAME "SYSTEM"
270#define DEFAULT_ODB_SIZE 0x100000
272#define NAME_LENGTH 32
273#define HOST_NAME_LENGTH 256
274#define MAX_CLIENTS 64
275#define MAX_EVENT_REQUESTS 10
276#define MAX_OPEN_RECORDS 256
277#define MAX_ODB_PATH 256
278#define BANKLIST_MAX 4096
279#define STRING_BANKLIST_MAX BANKLIST_MAX * 4
280#define TRANSITION_ERROR_STRING_LENGTH 256
283#define MIDAS_TCP_PORT 1175 /* port under which server is listening */
284
287#define DEFAULT_RPC_TIMEOUT 10000
288#define WATCHDOG_INTERVAL 1000
289
290#define DEFAULT_WATCHDOG_TIMEOUT 10000
292#define USE_HIDDEN_EQ
294/*------------------------------------------------------------------*/
295
296/* Enumeration definitions */
297
305#define STATE_STOPPED 1
306#define STATE_PAUSED 2
307#define STATE_RUNNING 3
311#define FORMAT_MIDAS 1
312//#define FORMAT_YBOS 2 /**< YBOS banks */
313//#define FORMAT_ASCII 3 /**< ASCII format */
314#define FORMAT_FIXED 4
315//#define FORMAT_DUMP 5 /**< Dump (detailed ASCII) format */
316//#define FORMAT_HBOOK 6 /**< CERN hbook (rz) format */
317#define FORMAT_ROOT 7
321#define GET_ALL (1<<0)
322#define GET_NONBLOCKING (1<<1)
323#define GET_RECENT (1<<2)
327#define TID_BYTE 1
328#define TID_UINT8 1
329#define TID_SBYTE 2
330#define TID_INT8 2
331#define TID_CHAR 3
332#define TID_WORD 4
333#define TID_UINT16 4
334#define TID_SHORT 5
335#define TID_INT16 5
336#define TID_DWORD 6
337#define TID_UINT32 6
338#define TID_INT 7
339#define TID_INT32 7
340#define TID_BOOL 8
341#define TID_FLOAT 9
342#define TID_FLOAT32 9
343#define TID_DOUBLE 10
344#define TID_FLOAT64 10
345#define TID_BITFIELD 11
346#define TID_STRING 12
347#define TID_ARRAY 13
348#define TID_STRUCT 14
349#define TID_KEY 15
350#define TID_LINK 16
351#define TID_INT64 17
352#define TID_UINT64 18
353#define TID_QWORD 18
354#define TID_LAST 19
358#define TR_SYNC 1
359#define TR_ASYNC 2
360#define TR_DETACH 4
361#define TR_MTHREAD 8
362
365#define BM_WAIT 0
366#define BM_NO_WAIT 1
367
370#define MODE_READ (1<<0)
371#define MODE_WRITE (1<<1)
372#define MODE_DELETE (1<<2)
373#define MODE_EXCLUSIVE (1<<3)
374#define MODE_ALLOC (1<<6)
375#define MODE_WATCH (1<<7)
376
379//#define RPC_OTIMEOUT 1
380//#define RPC_OTRANSPORT 2
381//#define RPC_OCONVERT_FLAG 3
382//#define RPC_OHW_TYPE 4
383//#define RPC_OSERVER_TYPE 5
384//#define RPC_OSERVER_NAME 6
385//#define RPC_CONVERT_FLAGS 7
386//#define RPC_ODB_HANDLE 8
387//#define RPC_CLIENT_HANDLE 9
388//#define RPC_SEND_SOCK 10
389//#define RPC_WATCHDOG_TIMEOUT 11
390//#define RPC_NODELAY 12
391
392/* special RPC handles for rpc_get_timeout() and rpc_set_timeout() */
393#define RPC_HNDLE_MSERVER -1
394#define RPC_HNDLE_CONNECT -2
395
396#define RPC_NO_REPLY 0x80000000l
397
400#define WF_WATCH_ME (1<<0) /* see cm_set_watchdog_flags */
401#define WF_CALL_WD (1<<1)
402
405#define TR_START (1<<0)
406#define TR_STOP (1<<1)
407#define TR_PAUSE (1<<2)
408#define TR_RESUME (1<<3)
409#define TR_STARTABORT (1<<4)
410#define TR_DEFERRED (1<<12)
411
414#define EQ_PERIODIC (1<<0)
415#define EQ_POLLED (1<<1)
416#define EQ_INTERRUPT (1<<2)
417#define EQ_MULTITHREAD (1<<3)
418#define EQ_SLOW (1<<4)
419#define EQ_MANUAL_TRIG (1<<5)
420#define EQ_FRAGMENTED (1<<6)
421#define EQ_EB (1<<7)
422#define EQ_USER (1<<8)
426#define RO_RUNNING (1<<0)
427#define RO_STOPPED (1<<1)
428#define RO_PAUSED (1<<2)
429#define RO_BOR (1<<3)
430#define RO_EOR (1<<4)
431#define RO_PAUSE (1<<5)
432#define RO_RESUME (1<<6)
434#define RO_TRANSITIONS (RO_BOR|RO_EOR|RO_PAUSE|RO_RESUME)
435#define RO_NONTRANS (RO_RUNNING|RO_STOPPED|RO_PAUSED)
436#define RO_ALWAYS (0xFF)
438#define RO_ODB (1<<8)
/* end of mdefineh */
442
445#define CH_BS 8
446#define CH_TAB 9
447#define CH_LF 10
448#define CH_CR 13
449
450#define CH_EXT 0x100
451
452#define CH_HOME (CH_EXT+0)
453#define CH_INSERT (CH_EXT+1)
454#define CH_DELETE (CH_EXT+2)
455#define CH_END (CH_EXT+3)
456#define CH_PUP (CH_EXT+4)
457#define CH_PDOWN (CH_EXT+5)
458#define CH_UP (CH_EXT+6)
459#define CH_DOWN (CH_EXT+7)
460#define CH_RIGHT (CH_EXT+8)
461#define CH_LEFT (CH_EXT+9)
462
463/* event sources in equipment */
469#define LAM_SOURCE(c, s) (c<<24 | ((s) & 0xFFFFFF))
470
475#define LAM_STATION(s) (1<<(s-1))
476
481#define LAM_SOURCE_CRATE(c) (c>>24)
482
487#define LAM_SOURCE_STATION(s) ((s) & 0xFFFFFF)
488
491#define CNAF 0x1 /* normal read/write */
492#define CNAF_nQ 0x2 /* Repeat read until noQ */
493
494#define CNAF_INHIBIT_SET 0x100
495#define CNAF_INHIBIT_CLEAR 0x101
496#define CNAF_CRATE_CLEAR 0x102
497#define CNAF_CRATE_ZINIT 0x103
498#define CNAF_TEST 0x110
499
508#ifndef MAX
509#define MAX(a,b) (((a)>(b))?(a):(b))
510#endif
511
514#ifndef MIN
515#define MIN(a,b) (((a)<(b))?(a):(b))
516#endif
517
518/*------------------------------------------------------------------*/
519
522#define ALIGN8(x) (((x)+7) & ~7)
523
526#define VALIGN(adr,align) (((POINTER_T) (adr)+(align)-1) & ~((align)-1))
527
/* end of mmacroh */
530
535/*
536* Bit flags */
537#define EVENTID_ALL -1 /* any event id */
538#define TRIGGER_ALL -1 /* any type of trigger */
539
542#define MT_ERROR (1<<0)
543#define MT_INFO (1<<1)
544#define MT_DEBUG (1<<2)
545#define MT_USER (1<<3)
546#define MT_LOG (1<<4)
547#define MT_TALK (1<<5)
548#define MT_CALL (1<<6)
549#define MT_ALL 0xFF
551#define MT_ERROR_STR "ERROR"
552#define MT_INFO_STR "INFO"
553#define MT_DEBUG_STR "DEBUG"
554#define MT_USER_STR "USER"
555#define MT_LOG_STR "LOG"
556#define MT_TALK_STR "TALK"
557#define MT_CALL_STR "CALL"
558
559#define MERROR MT_ERROR, __FILE__, __LINE__
560#define MINFO MT_INFO, __FILE__, __LINE__
561#define MDEBUG MT_DEBUG, __FILE__, __LINE__
562#define MUSER MT_USER, __FILE__, __LINE__
563#define MLOG MT_LOG, __FILE__, __LINE__
564#define MTALK MT_TALK, __FILE__, __LINE__
565#define MCALL MT_CALL, __FILE__, __LINE__
/* end of mdefineh */
569
570
581#define SUCCESS 1
582#define CM_SUCCESS 1
583#define CM_SET_ERROR 102
584#define CM_NO_CLIENT 103
585#define CM_DB_ERROR 104
586#define CM_UNDEF_EXP 105
587#define CM_VERSION_MISMATCH 106
588#define CM_SHUTDOWN 107
589#define CM_WRONG_PASSWORD 108
590#define CM_UNDEF_ENVIRON 109
591#define CM_DEFERRED_TRANSITION 110
592#define CM_TRANSITION_IN_PROGRESS 111
593#define CM_TIMEOUT 112
594#define CM_INVALID_TRANSITION 113
595#define CM_TOO_MANY_REQUESTS 114
596#define CM_TRUNCATED 115
597#define CM_TRANSITION_CANCELED 116
/* end of err21 */
600
605#define BM_SUCCESS 1
606#define BM_CREATED 202
607#define BM_NO_MEMORY 203
608#define BM_INVALID_NAME 204
609#define BM_INVALID_HANDLE 205
610#define BM_NO_SLOT 206
611#define BM_NO_SEMAPHORE 207
612#define BM_NOT_FOUND 208
613#define BM_ASYNC_RETURN 209
614#define BM_TRUNCATED 210
615#define BM_MULTIPLE_HOSTS 211
616#define BM_MEMSIZE_MISMATCH 212
617#define BM_CONFLICT 213
618#define BM_EXIT 214
619#define BM_INVALID_PARAM 215
620#define BM_MORE_EVENTS 216
621#define BM_INVALID_MIXING 217
622#define BM_NO_SHM 218
623#define BM_CORRUPTED 219
624#define BM_INVALID_SIZE 220
/* end of group 22 */
627
631#define DB_SUCCESS 1
632#define DB_CREATED 302
633#define DB_NO_MEMORY 303
634#define DB_INVALID_NAME 304
635#define DB_INVALID_HANDLE 305
636#define DB_NO_SLOT 306
637#define DB_NO_SEMAPHORE 307
638#define DB_MEMSIZE_MISMATCH 308
639#define DB_INVALID_PARAM 309
640#define DB_FULL 310
641#define DB_KEY_EXIST 311
642#define DB_NO_KEY 312
643#define DB_KEY_CREATED 313
644#define DB_TRUNCATED 314
645#define DB_TYPE_MISMATCH 315
646#define DB_NO_MORE_SUBKEYS 316
647#define DB_FILE_ERROR 317
648#define DB_NO_ACCESS 318
649#define DB_STRUCT_SIZE_MISMATCH 319
650#define DB_OPEN_RECORD 320
651#define DB_OUT_OF_RANGE 321
652#define DB_INVALID_LINK 322
653#define DB_CORRUPTED 323
654#define DB_STRUCT_MISMATCH 324
655#define DB_TIMEOUT 325
656#define DB_VERSION_MISMATCH 326
/* end of group 23 */
659
663#define SS_SUCCESS 1
664#define SS_CREATED 402
665#define SS_NO_MEMORY 403
666#define SS_INVALID_NAME 404
667#define SS_INVALID_HANDLE 405
668#define SS_INVALID_ADDRESS 406
669#define SS_FILE_ERROR 407
670#define SS_NO_SEMAPHORE 408
671#define SS_NO_PROCESS 409
672#define SS_NO_THREAD 410
673#define SS_SOCKET_ERROR 411
674#define SS_TIMEOUT 412
675#define SS_SERVER_RECV 413
676#define SS_CLIENT_RECV 414
677#define SS_ABORT 415
678#define SS_EXIT 416
679#define SS_NO_TAPE 417
680#define SS_DEV_BUSY 418
681#define SS_IO_ERROR 419
682#define SS_TAPE_ERROR 420
683#define SS_NO_DRIVER 421
684#define SS_END_OF_TAPE 422
685#define SS_END_OF_FILE 423
686#define SS_FILE_EXISTS 424
687#define SS_NO_SPACE 425
688#define SS_INVALID_FORMAT 426
689#define SS_NO_ROOT 427
690#define SS_SIZE_MISMATCH 428
691#define SS_NO_MUTEX 429
/* end of group 24 */
694
698#define RPC_SUCCESS 1
699#define RPC_ABORT SS_ABORT
700#define RPC_NO_CONNECTION 502
701#define RPC_NET_ERROR 503
702#define RPC_TIMEOUT 504
703#define RPC_EXCEED_BUFFER 505
704#define RPC_NOT_REGISTERED 506
705#define RPC_CONNCLOSED 507
706#define RPC_INVALID_ID 508
707#define RPC_SHUTDOWN 509
708#define RPC_NO_MEMORY 510
709#define RPC_DOUBLE_DEFINED 511
710#define RPC_MUTEX_TIMEOUT 512
/* end of group 25 */
713
717#define FE_SUCCESS 1
718#define FE_ERR_ODB 602
719#define FE_ERR_HW 603
720#define FE_ERR_DISABLED 604
721#define FE_ERR_DRIVER 605
722#define FE_PARTIALLY_DISABLED 606
723#define FE_NOT_YET_READ 607
727#define HS_SUCCESS 1
728#define HS_FILE_ERROR 702
729#define HS_NO_MEMORY 703
730#define HS_TRUNCATED 704
731#define HS_WRONG_INDEX 705
732#define HS_UNDEFINED_EVENT 706
733#define HS_UNDEFINED_VAR 707
737#define FTP_SUCCESS 1
738#define FTP_NET_ERROR 802
739#define FTP_FILE_ERROR 803
740#define FTP_RESPONSE_ERROR 804
741#define FTP_INVALID_ARG 805
745#define EL_SUCCESS 1
746#define EL_FILE_ERROR 902
747#define EL_NO_MESSAGE 903
748#define EL_TRUNCATED 904
749#define EL_FIRST_MSG 905
750#define EL_LAST_MSG 906
754#define AL_SUCCESS 1
755#define AL_INVALID_NAME 1002
756#define AL_ERROR_ODB 1003
757#define AL_RESET 1004
758#define AL_TRIGGERED 1005
762#define CMD_INIT 1 /* misc. commands must be below 20 !! */
763#define CMD_EXIT 2
764#define CMD_START 3
765#define CMD_STOP 4
766#define CMD_IDLE 5
767#define CMD_GET_THRESHOLD 6
768#define CMD_GET_THRESHOLD_CURRENT 7
769#define CMD_GET_THRESHOLD_ZERO 8
770#define CMD_SET_LABEL 9
771#define CMD_GET_LABEL 10
772#define CMD_OPEN 11
773#define CMD_CLOSE 12
774#define CMD_MISC_LAST 12 /* update this if you add new commands */
775
776#define CMD_SET_FIRST CMD_MISC_LAST+1 /* set commands */
777#define CMD_SET CMD_SET_FIRST // = 13
778#define CMD_SET_VOLTAGE_LIMIT CMD_SET_FIRST+1
779#define CMD_SET_CURRENT_LIMIT CMD_SET_FIRST+2
780#define CMD_SET_RAMPUP CMD_SET_FIRST+3
781#define CMD_SET_RAMPDOWN CMD_SET_FIRST+4
782#define CMD_SET_TRIP_TIME CMD_SET_FIRST+5
783#define CMD_SET_CHSTATE CMD_SET_FIRST+6
784#define CMD_SET_LAST CMD_SET_FIRST+6 /* update this if you add new commands */
785
786#define CMD_GET_FIRST CMD_SET_LAST+1 /* multithreaded get commands */
787#define CMD_GET CMD_GET_FIRST // = 20
788#define CMD_GET_CURRENT CMD_GET_FIRST+1
789#define CMD_GET_TRIP CMD_GET_FIRST+2
790#define CMD_GET_STATUS CMD_GET_FIRST+3
791#define CMD_GET_TEMPERATURE CMD_GET_FIRST+4
792#define CMD_GET_DEMAND CMD_GET_FIRST+5
793#define CMD_GET_LAST CMD_GET_FIRST+5 /* update this if you add new commands ! */
794
795#define CMD_GET_DIRECT CMD_GET_LAST+1 /* direct get commands */
796#define CMD_GET_VOLTAGE_LIMIT CMD_GET_DIRECT // = 25
797#define CMD_GET_CURRENT_LIMIT CMD_GET_DIRECT+2
798#define CMD_GET_RAMPUP CMD_GET_DIRECT+3
799#define CMD_GET_RAMPDOWN CMD_GET_DIRECT+4
800#define CMD_GET_TRIP_TIME CMD_GET_DIRECT+5
801#define CMD_GET_CHSTATE CMD_GET_DIRECT+6
802#define CMD_GET_CRATEMAP CMD_GET_DIRECT+7
803#define CMD_GET_DEMAND_DIRECT CMD_GET_DIRECT+8
804#define CMD_GET_DIRECT_LAST CMD_GET_DIRECT+8 /* update this if you add new commands ! */
805
806#define CMD_ENABLE_COMMAND (1<<14) /* these two commands can be used to enable/disable */
807#define CMD_DISABLE_COMMAND (1<<15) /* one of the other commands */
808
811#define CMD_WRITE 100
812#define CMD_READ 101
813#define CMD_PUTS 102
814#define CMD_GETS 103
815#define CMD_DEBUG 104
816#define CMD_NAME 105
817
820#define CMD_INTERRUPT_ENABLE 100
821#define CMD_INTERRUPT_DISABLE 101
822#define CMD_INTERRUPT_ATTACH 102
823#define CMD_INTERRUPT_DETACH 103
824
827#define BD_GETS(s,z,p,t) info->bd(CMD_GETS, info->bd_info, s, z, p, t)
828#define BD_READS(s,z,t) info->bd(CMD_READ, info->bd_info, s, z, t)
829#define BD_PUTS(s) info->bd(CMD_PUTS, info->bd_info, s)
830#define BD_WRITES(s) info->bd(CMD_WRITE, info->bd_info, s)
831
/* end of 26 */
834
/* end of mdeferrorh */
837
838
839#define ANA_CONTINUE 1
840#define ANA_SKIP 0
841
842
843/*---- Buffer manager structures -----------------------------------*/
844
858
866#define TRIGGER_MASK(e) ((((EVENT_HEADER *) e)-1)->trigger_mask)
867
873#define EVENT_ID(e) ((((EVENT_HEADER *) e)-1)->event_id)
874
880#define SERIAL_NUMBER(e) ((((EVENT_HEADER *) e)-1)->serial_number)
881
887#define TIME_STAMP(e) ((((EVENT_HEADER *) e)-1)->time_stamp)
888
894#define DATA_SIZE(e) ((((EVENT_HEADER *) e)-1)->data_size)
895
896#define EVENT_SOURCE(e,o) (* (INT*) (e+o))
897
900#define EVENTID_BOR ((short int) 0x8000)
901#define EVENTID_EOR ((short int) 0x8001)
902#define EVENTID_MESSAGE ((short int) 0x8002)
906#define EVENTID_FRAG1 ((short int) 0xC000) /* first fragment */
907#define EVENTID_FRAG ((short int) 0xD000) /* added to real event-id */
908
911#define MIDAS_MAGIC 0x494d
919
922typedef INT (RPC_HANDLER)(INT index, void *prpc_param[]);
923
933
956
970
971/* Per-process buffer access structure (descriptor) */
972
973/*
974 * BUFFER locking rules:
975 * locking order: read_cache_mutex -> write_cache_mutex -> buffer_mutex -> buffer semaphore
976 * lock read_cache_mutex to access read_cache_xxx, ok to check read_cache_size is not 0
977 * lock write_cache_mutex to access write_cache_xxx, ok to check write_cache_size is not 0
978 * lock buffer_mutex to access all other data in BUFFER
979 * lock buffer semaphore to access data in shared memory pointed to by buffer_header
980 * to avoid deadlocks:
981 * do not call ODB functions while holding any any of these locks.
982 * ok to call cm_msg()
983 */
984
1025
1039
1045
1048/*---- Equipment ---------------------------------------------------*/
1049
1050#define DF_INPUT (1<<0)
1051#define DF_OUTPUT (1<<1)
1052#define DF_PRIO_DEVICE (1<<2)
1053#define DF_READ_ONLY (1<<3)
1054#define DF_MULTITHREAD (1<<4) //*< access device with a dedicated thread */
1055#define DF_HW_RAMP (1<<5) //*< high voltage device can do hardware ramping */
1056#define DF_LABELS_FROM_DEVICE (1<<6) //*< pull HV channel names from device */
1057#define DF_REPORT_TEMP (1<<7) //*< report temperature from HV cards */
1058#define DF_REPORT_STATUS (1<<8) //*< report status word from HV channels */
1059#define DF_REPORT_CHSTATE (1<<9) //*< report channel state word from HV channels */
1060#define DF_REPORT_CRATEMAP (1<<10) //*< reports an integer encoding size and occupancy of HV crate */
1061#define DF_QUICKSTART (1<<11) //*< do not read channels initially during init to speed up startup */
1062#define DF_POLL_DEMAND (1<<12) //*< continously read demand value from device */
1063#define DF_PRIORITY_READ (1<<13) //*< read channel with priority after setting */
1064
1068typedef struct {
1070 INT(*bd) (INT cmd, ...);
1071 void *bd_info;
1072} BUS_DRIVER;
1073
1074typedef struct {
1076 char label[NAME_LENGTH];
1079
1087
1108
1111#define EQUIPMENT_COMMON_STR "\
1112Event ID = WORD : 0\n\
1113Trigger mask = WORD : 0\n\
1114Buffer = STRING : [32] SYSTEM\n\
1115Type = INT : 0\n\
1116Source = INT : 0\n\
1117Format = STRING : [8] FIXED\n\
1118Enabled = BOOL : 0\n\
1119Read on = INT : 0\n\
1120Period = INT : 0\n\
1121Event limit = DOUBLE : 0\n\
1122Num subevents = DWORD : 0\n\
1123Log history = INT : 0\n\
1124Frontend host = STRING : [32] \n\
1125Frontend name = STRING : [32] \n\
1126Frontend file name = STRING : [256] \n\
1127Status = STRING : [256] \n\
1128Status color = STRING : [32] \n\
1129Hidden = BOOL : 0\n\
1130"
1131
1135typedef struct {
1140
1143#define EQUIPMENT_STATISTICS_STR "\
1144Events sent = DOUBLE : 0\n\
1145Events per sec. = DOUBLE : 0\n\
1146kBytes per sec. = DOUBLE : 0\n\
1147"
1148
1149typedef struct eqpmnt *PEQUIPMENT;
1150
1169
1194
1198
1199/*---- Banks -------------------------------------------------------*/
1200
1201#define BANK_FORMAT_VERSION 1
1202#define BANK_FORMAT_32BIT (1<<4)
1203#define BANK_FORMAT_64BIT_ALIGNED (1<<5)
1212
1213typedef struct {
1214 char name[4];
1217} BANK;
1218
1219typedef struct {
1220 char name[4];
1223} BANK32;
1224
1231
1232typedef struct {
1236} TAG;
1237
1248
1251/*---- Analyzer request --------------------------------------------*/
1252
1253typedef struct {
1255 char author[NAME_LENGTH];
1256 INT(*analyzer) (EVENT_HEADER *, void *);
1260 INT(*init) (void);
1261 INT(*exit) (void);
1264 const char **init_str;
1267} ANA_MODULE;
1268
1278
1279typedef struct {
1283} AR_STATS;
1284
1310
1311/* output file information, maps to /<analyzer>/Output */
1312typedef struct {
1313 char filename[256];
1316 char histo_dump_filename[256];
1318 char last_histo_filename[256];
1320 char global_memory_name[8];
1322
1323#define ANA_OUTPUT_INFO_STR "\
1324Filename = STRING : [256] run%05d.asc\n\
1325RWNT = BOOL : 0\n\
1326Histo Dump = BOOL : 0\n\
1327Histo Dump Filename = STRING : [256] his%05d.rz\n\
1328Clear histos = BOOL : 1\n\
1329Last Histo Filename = STRING : [256] last.rz\n\
1330Events to ODB = BOOL : 1\n\
1331Global Memory Name = STRING : [8] ONLN\n\
1332"
1333
1334/*---- Tests -------------------------------------------------------*/
1335
1343
1344#define SET_TEST(t, v) { if (!t.registered) test_register(&t); t.value = (v); }
1345#define TEST(t) (t.value)
1346
1347#ifdef DEFINE_TESTS
1348#define DEF_TEST(t) ANA_TEST t = { #t, 0, 0, FALSE };
1349#else
1350#define DEF_TEST(t) extern ANA_TEST t;
1351#endif
1352
1353/*---- History structures ------------------------------------------*/
1354
1355#define RT_DATA (*((DWORD *) "HSDA"))
1356#define RT_DEF (*((DWORD *) "HSDF"))
1357
1358typedef struct {
1359 DWORD record_type; /* RT_DATA or RT_DEF */
1362 DWORD def_offset; /* place of definition */
1363 DWORD data_size; /* data following this header in bytes */
1364} HIST_RECORD;
1365
1366typedef struct {
1368 char event_name[NAME_LENGTH];
1370} DEF_RECORD;
1371
1377
1378typedef struct history_struct {
1380 std::string event_name;
1383 std::string hist_fn;
1384 std::string index_fn;
1385 std::string def_fn;
1386 int hist_fh = 0;
1387 int index_fh = 0;
1388 int def_fh = 0;
1392
1393/*---- ODB runinfo -------------------------------------------------*/
1394
1407
1408#define RUNINFO_STR(_name) const char *_name[] = {\
1409"[.]",\
1410"State = INT : 1",\
1411"Online Mode = INT : 1",\
1412"Run number = INT : 0",\
1413"Transition in progress = INT : 0",\
1414"Start abort = INT : 0",\
1415"Requested transition = INT : 0",\
1416"Start time = STRING : [32] Tue Sep 09 15:04:42 1997",\
1417"Start time binary = DWORD : 0",\
1418"Stop time = STRING : [32] Tue Sep 09 15:04:42 1997",\
1419"Stop time binary = DWORD : 0",\
1420"",\
1421NULL }
1422
1423/*---- Alarm system ------------------------------------------------*/
1424
1425/********************************************************************/
1439
1440#define AT_INTERNAL 1
1441#define AT_PROGRAM 2
1442#define AT_EVALUATED 3
1443#define AT_PERIODIC 4
1444#define AT_LAST 4
1446#define PROGRAM_INFO_STR(_name) const char *_name[] = {\
1447"[.]",\
1448"Required = BOOL : n",\
1449"Watchdog timeout = INT : 10000",\
1450"Check interval = DWORD : 180000",\
1451"Start command = STRING : [256] ",\
1452"Auto start = BOOL : n",\
1453"Auto stop = BOOL : n",\
1454"Auto restart = BOOL : n",\
1455"Alarm class = STRING : [32] ",\
1456"First failed = DWORD : 0",\
1457"",\
1458NULL }
1459
1475
1476#define ALARM_CLASS_STR(_name) const char *_name[] = {\
1477"[.]",\
1478"Write system message = BOOL : y",\
1479"Write Elog message = BOOL : n",\
1480"System message interval = INT : 60",\
1481"System message last = DWORD : 0",\
1482"Execute command = STRING : [256] ",\
1483"Execute interval = INT : 0",\
1484"Execute last = DWORD : 0",\
1485"Stop run = BOOL : n",\
1486"Display BGColor = STRING : [32] red",\
1487"Display FGColor = STRING : [32] black",\
1488"Alarm sound = BOOL : y"\
1489"",\
1490NULL }
1491
1494typedef struct {
1502 char time_triggered_first[32];
1503 char time_triggered_last[32];
1504 char condition[256];
1505 char alarm_class[32];
1506 char alarm_message[80];
1507} ALARM;
1508
1509#define ALARM_ODB_STR(_name) const char *_name[] = {\
1510"[.]",\
1511"Active = BOOL : n",\
1512"Triggered = INT : 0",\
1513"Type = INT : 3",\
1514"Check interval = INT : 60",\
1515"Checked last = DWORD : 0",\
1516"Trigger count = DWORD : 0",\
1517"Trigger count required = DWORD : 0",\
1518"Time triggered first = STRING : [32] ",\
1519"Time triggered last = STRING : [32] ",\
1520"Condition = STRING : [256] /Runinfo/Run number > 100",\
1521"Alarm Class = STRING : [32] Alarm",\
1522"Alarm Message = STRING : [80] Run number became too large",\
1523"",\
1524NULL }
1525
1526#define ALARM_PERIODIC_STR(_name) const char *_name[] = {\
1527"[.]",\
1528"Active = BOOL : n",\
1529"Triggered = INT : 0",\
1530"Type = INT : 4",\
1531"Check interval = INT : 28800",\
1532"Checked last = DWORD : 0",\
1533"Trigger count = DWORD : 0",\
1534"Trigger count required = DWORD : 0",\
1535"Time triggered first = STRING : [32] ",\
1536"Time triggered last = STRING : [32] ",\
1537"Condition = STRING : [256] ",\
1538"Alarm Class = STRING : [32] Warning",\
1539"Alarm Message = STRING : [80] Please do your shift checks",\
1540"",\
1541NULL }
1542
1543/*---- malloc/free routines for debugging --------------------------*/
1544
1545#ifdef _MEM_DBG
1546#define M_MALLOC(x) dbg_malloc((x), __FILE__, __LINE__)
1547#define M_CALLOC(x,y) dbg_calloc((x), (y), __FILE__, __LINE__)
1548#define M_FREE(x) dbg_free ((x), __FILE__, __LINE__)
1549#else
1550#define M_MALLOC(x) malloc(x)
1551#define M_CALLOC(x,y) calloc(x,y)
1552#define M_FREE(x) free(x)
1553#endif
1554
1555void *dbg_malloc(unsigned int size, char *file, int line);
1556void *dbg_calloc(unsigned int size, unsigned int count, char *file, int line);
1557void dbg_free(void *adr, char *file, int line);
1558
1559/*---- CERN libray -------------------------------------------------*/
1560
1561#ifdef extname
1562#define PAWC_NAME pawc_
1563#else
1564#define PAWC_NAME PAWC
1565#endif
1566
1567#define PAWC_DEFINE(size) \
1568INT PAWC_NAME[size/4]; \
1569INT pawc_size = size
1570
1571/* bug in ROOT include files */
1572#undef GetCurrentTime
1573
1574/*---- RPC ---------------------------------------------------------*/
1575
1578#define RPC_IN (1 << 0)
1579#define RPC_OUT (1 << 1)
1580#define RPC_POINTER (1 << 2)
1581#define RPC_FIXARRAY (1 << 3)
1582#define RPC_VARARRAY (1 << 4)
1583#define RPC_OUTGOING (1 << 5)
1584
1587typedef struct {
1591} RPC_PARAM;
1592
1593#define MAX_RPC_PARAMS 20
1594
1601
1604#define RPC_MIN_ID 1
1605#define RPC_MAX_ID 9999
1606
1609#define CF_ENDIAN (1<<0)
1610#define CF_IEEE2VAX (1<<1)
1611#define CF_VAX2IEEE (1<<2)
1612//#define CF_ASCII (1<<3)
1613
1614#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1615#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1616
1617#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1618#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1619
1620#define CINT(_i) (* ((INT *) prpc_param[_i]))
1621#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1622
1623#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1624#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1625
1626#define CLONG(_i) (* ((long *) prpc_param[_i]))
1627#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1628
1629#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1630#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1631
1632#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1633#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1634
1635#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1636#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1637
1638#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1639#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1640
1641#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1642#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1643
1644#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1645#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1646
1647#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1648#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1649
1650#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1651#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1652
1653#define CINT(_i) (* ((INT *) prpc_param[_i]))
1654#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1655
1656#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1657#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1658
1659#define CLONG(_i) (* ((long *) prpc_param[_i]))
1660#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1661
1662#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1663#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1664
1665#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1666#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1667
1668#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1669#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1670
1671#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1672#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1673
1674#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1675#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1676
1677#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1678#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1679
1680
1681
1682#define cBYTE (* ((BYTE *) prpc_param[--n_param]))
1683#define cPBYTE ( ((BYTE *) prpc_param[--n_param]))
1684
1685#define cSHORT (* ((short *) prpc_param[--n_param]))
1686#define cPSHORT ( ((short *) prpc_param[--n_param]))
1687
1688#define cINT (* ((INT *) prpc_param[--n_param]))
1689#define cPINT ( ((INT *) prpc_param[--n_param]))
1690
1691#define cWORD (* ((WORD *) prpc_param[--n_param]))
1692#define cPWORD ( ((WORD *) prpc_param[--n_param]))
1693
1694#define cLONG (* ((long *) prpc_param[--n_param]))
1695#define cPLONG ( ((long *) prpc_param[--n_param]))
1696
1697#define cDWORD (* ((DWORD *) prpc_param[--n_param]))
1698#define cPDWORD ( ((DWORD *) prpc_param[--n_param]))
1699
1700#define cHNDLE (* ((HNDLE *) prpc_param[--n_param]))
1701#define cPHNDLE ( ((HNDLE *) prpc_param[--n_param]))
1702
1703#define cBOOL (* ((BOOL *) prpc_param[--n_param]))
1704#define cPBOOL ( ((BOOL *) prpc_param[--n_param]))
1705
1706#define cFLOAT (* ((float *) prpc_param[--n_param]))
1707#define cPFLOAT ( ((float *) prpc_param[--n_param]))
1708
1709#define cDOUBLE (* ((double *) prpc_param[--n_param]))
1710#define cPDOUBLE ( ((double *) prpc_param[--n_param]))
1711
1712#define cSTRING ( ((char *) prpc_param[--n_param]))
1713#define cARRAY ( ((void *) prpc_param[--n_param]))
1714
1717#define JS_LEVEL_0 0
1718#define JS_LEVEL_1 1
1719#define JS_MUST_BE_SUBDIR 1
1720#define JSFLAG_SAVE_KEYS (1<<1)
1721#define JSFLAG_FOLLOW_LINKS (1<<2)
1722#define JSFLAG_RECURSE (1<<3)
1723#define JSFLAG_LOWERCASE (1<<4)
1724#define JSFLAG_OMIT_NAMES (1<<5)
1725#define JSFLAG_OMIT_LAST_WRITTEN (1<<6)
1726#define JSFLAG_OMIT_OLD (1<<7)
1727
1728/*---- Function declarations ---------------------------------------*/
1729
1730/* make functions under WinNT dll exportable */
1731#if defined(OS_WINNT) && defined(MIDAS_DLL)
1732#define EXPRT __declspec(dllexport)
1733#else
1734#define EXPRT
1735#endif
1736
1737 /*---- common routines ----*/
1738 std::string cm_get_error(INT code);
1739 const char* EXPRT cm_get_version(void);
1740 const char* EXPRT cm_get_revision(void);
1741 [[deprecated("Use std::string cm_get_experiment_name();")]]
1743 std::string cm_get_experiment_name();
1745 INT EXPRT cm_get_environment(std::string *host_name, std::string *exp_name);
1748 [[deprecated("Use std::string cm_get_exptab_filename();")]]
1749 INT EXPRT cm_get_exptab_filename(char* filename, int filename_size);
1750 std::string cm_get_exptab_filename();
1751 [[deprecated("Please use the std::string version of this function")]]
1752 INT EXPRT cm_get_exptab(const char* exp_name, char* expdir, int expdir_size, char* expuser, int expuser_size);
1753 INT EXPRT cm_get_exptab(const char* exp_name, std::string* expdir, std::string* expuser);
1755 INT EXPRT cm_select_experiment_remote(const char *host_name, std::string *exp_name);
1757 INT EXPRT cm_connect_experiment(const char *host_name, const char *exp_name,
1758 const char *client_name, void (*func) (char *));
1759 INT EXPRT cm_connect_experiment1(const char *host_name, const char *exp_name,
1760 const char *client_name,
1761 void (*func) (char *), INT odb_size,
1762 DWORD watchdog_timeout);
1765 int sequence_number);
1769 INT EXPRT cm_query_transition(int *transition, int *run_number, int *trans_time);
1772 INT EXPRT cm_transition(INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag);
1774 std::string EXPRT cm_transition_name(int transition);
1776 INT EXPRT cm_register_function(INT id, INT(*func) (INT, void **));
1777 INT EXPRT cm_connect_client(const char *client_name, HNDLE * hConn);
1784 const char *host_name, char *client_name,
1785 INT computer_id, const char *password, DWORD watchdog_timeout);
1786#define HAVE_CM_GET_CLIENT_NAME 1
1787 std::string EXPRT cm_get_client_name();
1791 INT EXPRT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD * timeout, DWORD * last);
1792 INT EXPRT cm_watchdog_thread(void*unused);
1795 INT EXPRT cm_shutdown(const char *name, BOOL bUnique);
1796 INT EXPRT cm_exist(const char *name, BOOL bUnique);
1797 INT EXPRT cm_cleanup(const char *client_name, BOOL ignore_timeout);
1799#define HAVE_CM_PERIODIC_TASKS 1
1801 INT EXPRT cm_execute(const char *command, char *result, INT buf_size);
1803 [[deprecated("Please use the std::string version of this function")]]
1804 INT EXPRT cm_asctime(char *str, INT buf_size);
1805 std::string EXPRT cm_asctime();
1806 INT EXPRT cm_time(DWORD * t);
1808 void EXPRT cm_ack_ctrlc_pressed(void);
1810 int EXPRT cm_write_event_to_odb(HNDLE hDB, HNDLE hKey, const EVENT_HEADER* pevent, INT format);
1811
1812 INT EXPRT cm_set_msg_print(INT system_mask, INT user_mask, int (*func) (const char *));
1813 INT EXPRT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format, ...) MATTRPRINTF(5,6);
1814 INT EXPRT cm_msg1(INT message_type, const char *filename, INT line, const char *facility, const char *routine, const char *format, ...) MATTRPRINTF(6,7);
1817 INT EXPRT cm_msg_retrieve(INT n_message, char *message, INT buf_size);
1820 void EXPRT cm_msg_get_logfile(const char *facility, time_t t, std::string* filename, std::string* linkname, std::string* linktarget);
1824
1825 BOOL EXPRT equal_ustring(const char *str1, const char *str2);
1827 bool EXPRT ends_with_char(const std::string& s, char c);
1828 BOOL EXPRT strmatch(char* pattern, char*str);
1829 void EXPRT strarrayindex(char* odbpath, int* index1, int* index2);
1830 std::string msprintf(const char *format, ...) MATTRPRINTF(1,2);
1831
1832 std::string cm_expand_env(const char* str);
1833
1834 /*---- buffer manager ----*/
1835 INT EXPRT bm_open_buffer(const char *buffer_name, INT buffer_size, INT * buffer_handle);
1836 INT EXPRT bm_get_buffer_handle(const char *buffer_name, INT * buffer_handle);
1837 INT EXPRT bm_close_buffer(INT buffer_handle);
1839 INT EXPRT bm_init_buffer_counters(INT buffer_handle);
1840 INT EXPRT bm_get_buffer_info(INT buffer_handle, BUFFER_HEADER * buffer_header);
1841 INT EXPRT bm_get_buffer_level(INT buffer_handle, INT * n_bytes);
1842 INT EXPRT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size);
1845 INT EXPRT bm_match_event(short int event_id, short int trigger_mask, const EVENT_HEADER *pevent);
1846 INT EXPRT bm_request_event(INT buffer_handle,
1847 short int event_id,
1848 short int trigger_mask,
1849 INT sampling_type,
1850 INT * request_id,
1851 EVENT_HANDLER *func
1852 );
1853 INT EXPRT bm_add_event_request(INT buffer_handle,
1854 short int event_id,
1855 short int trigger_mask,
1856 INT sampling_type,
1857 EVENT_HANDLER *func,
1858 INT request_id);
1859 INT EXPRT bm_remove_event_request(INT buffer_handle, INT request_id);
1860 INT EXPRT bm_delete_request(INT request_id);
1861 INT EXPRT bm_send_event(INT buffer_handle, const EVENT_HEADER* event, int unused, int timeout_msec);
1862#define HAVE_BM_SEND_EVENT_VEC 1
1863 INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector<char>& event, int timeout_msec);
1864 INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector<std::vector<char>>& event, int timeout_msec);
1865 INT EXPRT bm_send_event_sg(INT buffer_handle, int sg_n, const char* const sg_ptr[], const size_t sg_len[], int timeout_msec);
1866 INT EXPRT bm_receive_event(INT buffer_handle, void *destination, INT * buf_size, int timeout_msec);
1867#define HAVE_BM_RECEIVE_EVENT_VEC 1
1868 INT EXPRT bm_receive_event_vec(INT buffer_handle, std::vector<char> *event, int timeout_msec);
1869#define HAVE_BM_RECEIVE_EVENT_ALLOC 1
1871 INT EXPRT bm_skip_event(INT buffer_handle);
1872 INT EXPRT bm_flush_cache(INT buffer_handle, int timeout_msec);
1873 INT EXPRT bm_poll_event(void);
1877
1881 /*---- online database functions -----*/
1882 INT EXPRT db_open_database(const char *database_name, INT database_size, HNDLE * hdb, const char *client_name);
1886
1887 INT EXPRT db_create_key(HNDLE hdb, HNDLE key_handle, const char *key_name, DWORD type);
1889 INT EXPRT db_set_value(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, const void *data, INT size, INT num_values, DWORD type);
1890 INT EXPRT db_set_value_index(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const void *data, INT data_size, INT index, DWORD type, BOOL truncate);
1891 INT EXPRT db_get_value(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, void *data, INT * size, DWORD type, BOOL create);
1892 INT EXPRT db_resize_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, int num_values, int max_string_size);
1893#define HAVE_DB_GET_VALUE_STRING_CREATE_STRING_LENGTH 1
1894 INT EXPRT db_get_value_string(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, int index, std::string* s, BOOL create = FALSE, int create_string_length = 0);
1895 INT EXPRT db_set_value_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string* s);
1897 INT EXPRT db_find_link(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE * subhKey);
1899 INT EXPRT db_find_link1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE * subhKey);
1900 INT EXPRT db_find_keys(HNDLE hDB, HNDLE hKey, char *odbpath, std::vector<HNDLE> &hKeyVector);
1902 INT EXPRT db_scan_tree(HNDLE hDB, HNDLE hKey, int level, INT(*callback) (HNDLE, HNDLE, KEY *, INT, void *), void *info);
1903 INT EXPRT db_scan_tree_link(HNDLE hDB, HNDLE hKey, int level, void (*callback) (HNDLE, HNDLE, KEY *, INT, void *), void *info);
1904 [[deprecated("Please use the std::string version of this function")]]
1905 INT EXPRT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size);
1906 std::string EXPRT db_get_path(HNDLE hDB, HNDLE hKey);
1913 INT EXPRT db_get_key_info(HNDLE hDB, HNDLE hKey, char *name, INT name_size, INT * type, INT * num_values, INT * item_size);
1915 INT EXPRT db_rename_key(HNDLE hDB, HNDLE hKey, const char *name);
1917 INT EXPRT db_get_data(HNDLE hdb, HNDLE key_handle, void *data, INT * buf_size, DWORD type);
1919 INT EXPRT db_get_data1(HNDLE hDB, HNDLE hKey, void *data, INT * buf_size, DWORD type, INT * num_values);
1921 INT EXPRT db_set_data(HNDLE hdb, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1922 INT EXPRT db_set_data1(HNDLE hdb, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1924 INT EXPRT db_set_link_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1929 INT EXPRT db_merge_data(HNDLE hDB, HNDLE hKeyRoot, const char *name, void *data, INT data_size, INT num_values, INT type);
1931 INT EXPRT db_create_record(HNDLE hdb, HNDLE hkey, const char *name, const char *init_str);
1932 INT EXPRT db_check_record(HNDLE hDB, HNDLE hKey, const char *key_name, const char *rec_str, BOOL correct);
1933 INT EXPRT db_open_record(HNDLE hdb, HNDLE hkey, void *ptr, INT rec_size, WORD access, void (*dispatcher) (INT, INT, void *), void *info);
1934 INT EXPRT db_open_record1(HNDLE hdb, HNDLE hkey, void *ptr, INT rec_size, WORD access, void (*dispatcher) (INT, INT, void *), void *info, const char *rec_str);
1936 INT EXPRT db_get_record(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align);
1937 INT EXPRT db_get_record1(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align, const char *rec_str);
1938 INT EXPRT db_get_record2(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align, const char *rec_str, BOOL correct);
1939 INT EXPRT db_get_record_size(HNDLE hdb, HNDLE hKey, INT align, INT * buf_size);
1940 INT EXPRT db_set_record(HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align);
1941 INT EXPRT db_set_record2(HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align, const char *rec_str);
1944
1947
1948 INT EXPRT db_watch(HNDLE hDB, HNDLE hKey, void (*dispatcher) (INT, INT, INT, void *info), void *info);
1950 INT EXPRT db_unwatch_all(void);
1951
1952 INT EXPRT db_load(HNDLE hdb, HNDLE key_handle, const char *filename, BOOL bRemote);
1953 INT EXPRT db_save(HNDLE hdb, HNDLE key_handle, const char *filename, BOOL bRemote);
1954 INT EXPRT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT * buffer_size, const char *path);
1955 INT EXPRT db_paste(HNDLE hDB, HNDLE hKeyRoot, const char *buffer);
1956 INT EXPRT db_paste_xml(HNDLE hDB, HNDLE hKeyRoot, const char *buffer);
1957 INT EXPRT db_save_struct(HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append);
1958 INT EXPRT db_save_string(HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append);
1960 INT EXPRT db_copy_xml(HNDLE hDB, HNDLE hKey, char *buffer, int *buffer_size, bool header);
1961
1963 INT EXPRT db_load_json(HNDLE hdb, HNDLE key_handle, const char *filename);
1964 void EXPRT json_write(char **buffer, int* buffer_size, int* buffer_end, int level, const char* s, int quoted);
1965 int EXPRT json_write_anything(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end, int level, int must_be_subdir, int flags, time_t timestamp);
1966
1967 /* db_copy_json() is obsolete, use db_copy_json_save, _values and _ls instead */
1968 INT EXPRT db_copy_json_obsolete(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end, int save_keys, int follow_links, int recurse);
1969
1970 /* json encoder using the "ODB save" encoding, for use with "ODB load" and db_paste_json() */
1971 INT EXPRT db_copy_json_save(HNDLE hDB, HNDLE hKey, char **buffer, int* buffer_size, int* buffer_end);
1972 /* json encoder using the "ls" format, for getting the contents of a single ODB subdirectory */
1973 INT EXPRT db_copy_json_ls(HNDLE hDB, HNDLE hKey, char **buffer, int* buffer_size, int* buffer_end);
1974 /* json encoder using the "get_values" format, for resolving links and normalized ODB path names (converted to lower-case) */
1976 /* json encoder for an ODB array */
1977 INT EXPRT db_copy_json_array(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end);
1978 /* json encoder for a single element of an ODB array */
1979 INT EXPRT db_copy_json_index(HNDLE hDB, HNDLE hKey, int index, char **buffer, int *buffer_size, int *buffer_end);
1980
1981 INT EXPRT db_paste_json(HNDLE hDB, HNDLE hKey, const char *buffer);
1982 INT EXPRT db_paste_json_node(HNDLE hDB, HNDLE hKey, int index, const MJsonNode* json_node);
1983
1984 MJsonNode* EXPRT db_sor(HNDLE hDB, const char* path); // show open records
1985 MJsonNode* EXPRT db_scl(HNDLE hDB); // show clients
1986
1987 [[deprecated("Please use the std::string version of this function")]]
1988 INT EXPRT db_sprintf(char *string, const void *data, INT data_size, INT index, DWORD type);
1989 [[deprecated("Please use the std::string version of this function")]]
1990 INT EXPRT db_sprintff(char *string, const char *format, const void *data, INT data_size, INT index, DWORD type);
1991 [[deprecated("Please use the std::string version of this function")]]
1992 INT EXPRT db_sprintfh(char *string, const void *data, INT data_size, INT index, DWORD type);
1993 std::string EXPRT db_sprintf(const void *data, INT data_size, INT index, DWORD type);
1994 std::string EXPRT db_sprintff(const char *format, const void *data, INT data_size, INT index, DWORD type);
1995 std::string EXPRT db_sprintfh(const void *data, INT data_size, INT index, DWORD type);
1996 INT EXPRT db_sscanf(const char *string, void *data, INT * data_size, INT index, DWORD type);
1997 INT db_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD * timeout, DWORD * last);
2000
2001 [[deprecated("Please use the std::string version of this function")]]
2002 char EXPRT *strcomb(const char **list);
2003 std::string EXPRT strcomb1(const char **list);
2004
2007 /*---- Bank routines ----*/
2008 void EXPRT bk_init(void *pbh);
2009 void EXPRT bk_init32(void *event);
2010 void EXPRT bk_init32a(void *event);
2011 BOOL EXPRT bk_is32(const void *event);
2012 BOOL EXPRT bk_is32a(const void *event);
2013 INT EXPRT bk_size(const void *pbh);
2014 void EXPRT bk_create(void *pbh, const char *name, WORD type, void **pdata);
2015 INT EXPRT bk_delete(void *event, const char *name);
2016 INT EXPRT bk_close(void *pbh, void *pdata);
2017 INT EXPRT bk_list(const void *pbh, char *bklist);
2018 INT EXPRT bk_locate(const void *pbh, const char *name, void *pdata);
2019 INT EXPRT bk_iterate(const void *pbh, BANK ** pbk, void *pdata);
2020 INT EXPRT bk_iterate32(const void *pbh, BANK32 ** pbk, void *pdata);
2021 INT EXPRT bk_iterate32a(const void *pbh, BANK32A ** pbk, void *pdata);
2022 INT EXPRT bk_copy(char * pevent, char * psrce, const char * bkname);
2023 INT EXPRT bk_swap(void *event, BOOL force);
2024 INT EXPRT bk_find(const BANK_HEADER * pbkh, const char *name, DWORD * bklen, DWORD * bktype, void **pdata);
2025
2026 /*---- RPC routines ----*/
2028 INT EXPRT rpc_add_allowed_host(const char* hostname);
2029 INT EXPRT rpc_check_allowed_host(const char* hostname);
2030
2036 INT EXPRT rpc_set_name(const char *name);
2037 std::string rpc_get_name();
2038 bool EXPRT rpc_is_remote(void);
2039 bool EXPRT rpc_is_connected(void);
2040 std::string rpc_get_mserver_hostname();
2041 bool EXPRT rpc_is_mserver(void);
2042 INT EXPRT rpc_set_debug(void (*func) (const char *), INT mode);
2043 void EXPRT rpc_debug_printf(const char *format, ...);
2044
2045 INT EXPRT rpc_register_server(int port, int *plsock, int *pport);
2049 INT EXPRT rpc_client_call(HNDLE hConn, DWORD routine_id, ...);
2050 INT EXPRT rpc_call(DWORD routine_id, ...);
2052 const char EXPRT *rpc_tid_name(INT id);
2053 const char EXPRT *rpc_tid_name_old(INT id);
2054 INT EXPRT rpc_name_tid(const char* name); // inverse of rpc_tid_name()
2055 INT EXPRT rpc_server_connect(const char *host_name, const char *exp_name);
2056 INT EXPRT rpc_client_connect(const char *host_name, INT midas_port, const char *client_name, HNDLE * hConnection);
2058
2059 INT EXPRT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode);
2061
2062 INT EXPRT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event);
2063 INT EXPRT rpc_send_event_sg(INT buffer_handle, int sg_n, const char* const sg_ptr[], const size_t sg_len[]);
2064
2066
2067 void EXPRT rpc_get_convert_flags(INT * convert_flags);
2068 void EXPRT rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags);
2069 void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags);
2070
2074 /*---- system services ----*/
2075 DWORD EXPRT ss_millitime(void);
2076 DWORD EXPRT ss_time(void);
2077 double EXPRT ss_time_sec(void);
2079 void EXPRT ss_tzset();
2080 time_t EXPRT ss_mktime(struct tm* tms);
2081 std::string EXPRT ss_asctime(void);
2083 BOOL EXPRT ss_kbhit(void);
2084 std::string EXPRT ss_getcwd();
2085
2086 double EXPRT ss_nan(void);
2087 int EXPRT ss_isnan(double x);
2088 int EXPRT ss_isfin(double x);
2089
2090 void EXPRT ss_clear_screen(void);
2091 void EXPRT ss_printf(INT x, INT y, const char *format, ...);
2092 void ss_set_screen_size(int x, int y);
2093
2094 char EXPRT *ss_getpass(const char *prompt);
2095 INT EXPRT ss_getchar(BOOL reset);
2096 char EXPRT *ss_crypt(const char *key, const char *salt);
2097 char EXPRT *ss_gets(char *string, int size);
2098
2099 void EXPRT *ss_ctrlc_handler(void (*func) (int));
2100
2101 INT EXPRT ss_write_tcp(int sock, const char *buffer, size_t buffer_size);
2102
2103 /*---- direct io routines ----*/
2106
2107 /*---- tape routines ----*/
2108 INT EXPRT ss_tape_open(char *path, INT oflag, INT * channel);
2110 INT EXPRT ss_tape_status(char *path);
2121
2122 /*---- disk routines ----*/
2123 double EXPRT ss_disk_free(const char *path);
2124 double EXPRT ss_file_size(const char *path);
2125 time_t EXPRT ss_file_time(const char *path);
2126 INT EXPRT ss_dir_exist(const char *path);
2127 INT EXPRT ss_file_exist(const char *path);
2128 INT EXPRT ss_file_link_exist(const char *path);
2129 INT EXPRT ss_file_remove(const char *path);
2130 INT EXPRT ss_file_find(const char *path, const char *pattern, char **plist);
2131 INT EXPRT ss_dir_find(const char *path, const char *pattern, char **plist);
2132 INT EXPRT ss_dirlink_find(const char *path, const char *pattern, char **plist);
2133 INT EXPRT ss_file_find(const char *path, const char *pattern, STRING_LIST*);
2134 INT EXPRT ss_dir_find(const char *path, const char *pattern, STRING_LIST*);
2135 INT EXPRT ss_dirlink_find(const char *path, const char *pattern, STRING_LIST*);
2136 double EXPRT ss_disk_size(const char *path);
2137 int EXPRT ss_file_copy(const char *src, const char *dst, bool append = false);
2138
2139 /*---- UTF8 unicode ----*/
2140 bool ss_is_valid_utf8(const char* s);
2141 bool ss_repair_utf8(char* s);
2142 bool ss_repair_utf8(std::string& s);
2143
2146 /*---- ELog functions ----*/
2147 INT EXPRT el_retrieve(char *tag, char *date, int *run, char *author,
2148 char *type, char *system, char *subject,
2149 char *text, int *textsize, char *orig_tag,
2150 char *reply_tag, char *attachment1,
2151 char *attachment2, char *attachment3, char *encoding);
2152 INT EXPRT el_submit(int run, const char *author, const char *type, const char *system,
2153 const char *subject, const char *text, const char *reply_to,
2154 const char *encoding,
2155 const char *afilename1, const char *buffer1, INT buffer_size1,
2156 const char *afilename2, const char *buffer2, INT buffer_size2,
2157 const char *afilename3, const char *buffer3, INT buffer_size3,
2158 char *tag, INT tag_size);
2159 INT EXPRT el_search_message(char *tag, int *fh, BOOL walk, char* filename, int filename_size);
2160 INT EXPRT el_search_run(int run, char *return_tag);
2161 INT EXPRT el_delete_message(const char *tag);
2162
2163 /*---- alarm functions ----*/
2164 INT EXPRT al_check(void);
2165 INT EXPRT al_trigger_alarm(const char *alarm_name, const char *alarm_message,
2166 const char *default_class, const char *cond_str, INT type);
2167 INT EXPRT al_trigger_class(const char *alarm_class, const char *alarm_message, BOOL first);
2168 INT EXPRT al_reset_alarm(const char *alarm_name);
2169 BOOL EXPRT al_evaluate_condition(const char* alarm_name, const char *condition, std::string *pvalue);
2170 INT al_get_alarms(std::string *presult);
2171 INT EXPRT al_define_odb_alarm(const char *name, const char *condition, const char *aclass, const char *message);
2172
2173 /*---- analyzer functions ----*/
2174 void EXPRT test_register(ANA_TEST * t);
2175 void EXPRT add_data_dir(char *result, char *file);
2176 void EXPRT lock_histo(INT id);
2177
2178 void EXPRT open_subfolder(const char *name);
2180
2181 /*---- image history functions ----*/
2182 int hs_image_retrieve(std::string image_name, time_t start, time_t stop,
2183 std::vector<time_t> &vtime, std::vector<std::string> &vfilename);
2184
2185#endif /* _MIDAS_H */
2186
/* end of msectionh */
2189/* emacs
2190 * Local Variables:
2191 * tab-width: 8
2192 * c-basic-offset: 3
2193 * indent-tabs-mode: nil
2194 * End:
2195 */
double textsize
INT transition(INT run_number, char *error)
Definition consume.cxx:35
INT EXPRT al_trigger_class(const char *alarm_class, const char *alarm_message, BOOL first)
Definition alarm.cxx:413
BOOL EXPRT al_evaluate_condition(const char *alarm_name, const char *condition, std::string *pvalue)
Definition alarm.cxx:41
INT EXPRT al_define_odb_alarm(const char *name, const char *condition, const char *aclass, const char *message)
Definition alarm.cxx:921
INT al_get_alarms(std::string *presult)
Definition alarm.cxx:844
INT EXPRT al_reset_alarm(const char *alarm_name)
Definition alarm.cxx:525
INT EXPRT al_trigger_alarm(const char *alarm_name, const char *alarm_message, const char *default_class, const char *cond_str, INT type)
Definition alarm.cxx:283
INT EXPRT al_check(void)
Definition alarm.cxx:614
void EXPRT bk_init32a(void *event)
Definition midas.cxx:16490
INT EXPRT bk_close(void *pbh, void *pdata)
Definition midas.cxx:16788
INT EXPRT bk_iterate32a(const void *pbh, BANK32A **pbk, void *pdata)
Definition midas.cxx:17111
INT EXPRT bk_swap(void *event, BOOL force)
Definition midas.cxx:17165
BOOL EXPRT bk_is32a(const void *event)
Definition midas.cxx:16445
INT EXPRT bk_delete(void *event, const char *name)
Definition midas.cxx:16682
BOOL EXPRT bk_is32(const void *event)
Definition midas.cxx:16423
INT EXPRT bk_iterate32(const void *pbh, BANK32 **pbk, void *pdata)
Definition midas.cxx:17075
INT EXPRT bk_locate(const void *pbh, const char *name, void *pdata)
Definition midas.cxx:16897
void EXPRT bk_init(void *pbh)
Definition midas.cxx:16414
INT EXPRT bk_list(const void *pbh, char *bklist)
Definition midas.cxx:16848
INT EXPRT bk_copy(char *pevent, char *psrce, const char *bkname)
Definition midas.cxx:16612
INT EXPRT bk_iterate(const void *pbh, BANK **pbk, void *pdata)
Definition midas.cxx:17054
void EXPRT bk_init32(void *event)
Definition midas.cxx:16477
void EXPRT bk_create(void *pbh, const char *name, WORD type, void **pdata)
Definition midas.cxx:16569
INT EXPRT bk_find(const BANK_HEADER *pbkh, const char *name, DWORD *bklen, DWORD *bktype, void **pdata)
Definition midas.cxx:16960
INT EXPRT bk_size(const void *pbh)
Definition midas.cxx:16503
INT EXPRT bm_open_buffer(const char *buffer_name, INT buffer_size, INT *buffer_handle)
Definition midas.cxx:6725
INT EXPRT bm_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, int timeout_msec)
Definition midas.cxx:9686
INT EXPRT bm_write_statistics_to_odb(void)
Definition midas.cxx:7288
INT EXPRT bm_delete_request(INT request_id)
Definition midas.cxx:8592
INT EXPRT bm_close_all_buffers(void)
Definition midas.cxx:7251
INT EXPRT bm_poll_event(void)
Definition midas.cxx:11134
INT EXPRT bm_add_event_request(INT buffer_handle, short int event_id, short int trigger_mask, INT sampling_type, EVENT_HANDLER *func, INT request_id)
Definition midas.cxx:8322
INT EXPRT bm_receive_event_vec(INT buffer_handle, std::vector< char > *event, int timeout_msec)
Definition midas.cxx:10817
INT EXPRT bm_skip_event(INT buffer_handle)
Definition midas.cxx:10882
INT EXPRT bm_empty_buffers(void)
Definition midas.cxx:11248
INT EXPRT bm_request_event(INT buffer_handle, short int event_id, short int trigger_mask, INT sampling_type, INT *request_id, EVENT_HANDLER *func)
Definition midas.cxx:8473
INT EXPRT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size)
Definition midas.cxx:8148
INT EXPRT bm_receive_event(INT buffer_handle, void *destination, INT *buf_size, int timeout_msec)
Definition midas.cxx:10658
INT EXPRT bm_check_buffers(void)
Definition midas.cxx:10962
INT EXPRT bm_compose_event_threadsafe(EVENT_HEADER *event_header, short int event_id, short int trigger_mask, DWORD data_size, DWORD *serial)
Definition midas.cxx:8300
INT EXPRT bm_remove_event_request(INT buffer_handle, INT request_id)
Definition midas.cxx:8526
INT EXPRT bm_close_buffer(INT buffer_handle)
Definition midas.cxx:7104
INT EXPRT bm_send_event_sg(INT buffer_handle, int sg_n, const char *const sg_ptr[], const size_t sg_len[], int timeout_msec)
Definition midas.cxx:9786
INT EXPRT bm_compose_event(EVENT_HEADER *event_header, short int event_id, short int trigger_mask, DWORD data_size, DWORD serial)
Definition midas.cxx:8289
INT EXPRT bm_match_event(short int event_id, short int trigger_mask, const EVENT_HEADER *pevent)
Definition midas.cxx:6023
INT EXPRT bm_flush_cache(INT buffer_handle, int timeout_msec)
Definition midas.cxx:10215
INT EXPRT bm_get_buffer_handle(const char *buffer_name, INT *buffer_handle)
Definition midas.cxx:7083
INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector< char > &event, int timeout_msec)
Definition midas.cxx:9713
INT EXPRT bm_receive_event_alloc(INT buffer_handle, EVENT_HEADER **ppevent, int timeout_msec)
Definition midas.cxx:10739
INT EXPRT cm_register_transition(INT transition, INT(*func)(INT, char *), int sequence_number)
Definition midas.cxx:3601
INT EXPRT cm_shutdown(const char *name, BOOL bUnique)
Definition midas.cxx:7408
INT EXPRT cm_disconnect_client(HNDLE hConn, BOOL bShutdown)
Definition midas.cxx:2833
INT EXPRT cm_yield(INT millisec)
Definition midas.cxx:5650
INT EXPRT cm_get_experiment_database(HNDLE *hDB, HNDLE *hKeyClient)
Definition midas.cxx:3011
INT EXPRT cm_list_experiments_remote(const char *host_name, STRING_LIST *exp_names)
Definition midas.cxx:2612
INT EXPRT cm_get_watchdog_params(BOOL *call_watchdog, DWORD *timeout)
Definition midas.cxx:3325
INT EXPRT cm_connect_client(const char *client_name, HNDLE *hConn)
Definition midas.cxx:2766
INT EXPRT cm_connect_experiment(const char *host_name, const char *exp_name, const char *client_name, void(*func)(char *))
Definition midas.cxx:2278
INT EXPRT cm_list_experiments_local(STRING_LIST *exp_names)
Definition midas.cxx:2586
INT EXPRT cm_start_watchdog_thread(void)
Definition midas.cxx:7363
INT EXPRT cm_get_experiment_semaphore(INT *semaphore_alarm, INT *semaphore_elog, INT *semaphore_history, INT *semaphore_msg)
Definition midas.cxx:3033
INT EXPRT cm_set_client_run_state(INT state)
Definition midas.cxx:3791
INT EXPRT cm_transition(INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag)
Definition midas.cxx:5294
INT EXPRT cm_stop_watchdog_thread(void)
Definition midas.cxx:7378
std::string EXPRT cm_asctime()
Definition midas.cxx:1412
INT EXPRT cm_register_function(INT id, INT(*func)(INT, void **))
Definition midas.cxx:5798
INT EXPRT cm_connect_experiment1(const char *host_name, const char *exp_name, const char *client_name, void(*func)(char *), INT odb_size, DWORD watchdog_timeout)
Definition midas.cxx:2297
INT EXPRT cm_check_client(HNDLE hDB, HNDLE hKeyClient)
Definition midas.cxx:1869
INT EXPRT cm_periodic_tasks(void)
Definition midas.cxx:5587
INT EXPRT cm_select_experiment_remote(const char *host_name, std::string *exp_name)
Definition midas.cxx:2719
INT EXPRT cm_register_server(void)
Definition midas.cxx:3460
void EXPRT cm_ack_ctrlc_pressed(void)
Definition midas.cxx:5464
INT EXPRT cm_execute(const char *command, char *result, INT buf_size)
Definition midas.cxx:5731
INT EXPRT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
Definition midas.cxx:3344
INT EXPRT cm_cleanup(const char *client_name, BOOL ignore_timeout)
Definition midas.cxx:7618
INT EXPRT cm_select_experiment_local(std::string *exp_name)
Definition midas.cxx:2670
std::string std::string cm_expand_env(const char *str)
Definition midas.cxx:7718
std::string EXPRT cm_get_client_name()
Definition midas.cxx:2059
INT EXPRT cm_exec_script(const char *odb_path_to_script)
Definition midas.cxx:5469
INT EXPRT cm_set_client_info(HNDLE hDB, HNDLE *hKeyClient, const char *host_name, char *client_name, INT computer_id, const char *password, DWORD watchdog_timeout)
Definition midas.cxx:1893
INT EXPRT cm_get_exptab(const char *exp_name, char *expdir, int expdir_size, char *expuser, int expuser_size)
Definition midas.cxx:1830
INT EXPRT cm_disconnect_experiment(void)
Definition midas.cxx:2846
INT EXPRT cm_synchronize(DWORD *sec)
Definition midas.cxx:1369
std::string cm_get_exptab_filename()
Definition midas.cxx:1788
INT EXPRT cm_register_deferred_transition(INT transition, BOOL(*func)(INT, BOOL))
Definition midas.cxx:3845
INT EXPRT cm_set_experiment_local(const char *exp_name)
Definition midas.cxx:2166
INT EXPRT cm_get_environment(char *host_name, int host_name_size, char *exp_name, int exp_name_size)
Definition midas.cxx:2134
const char *EXPRT cm_get_version(void)
Definition midas.cxx:1476
INT EXPRT cm_deregister_transition(INT transition)
Definition midas.cxx:3677
INT EXPRT cm_check_deferred_transition(void)
Definition midas.cxx:3897
std::string cm_get_experiment_name()
Definition midas.cxx:1580
INT EXPRT cm_set_transition_sequence(INT transition, INT sequence_number)
Definition midas.cxx:3731
const char *EXPRT cm_get_revision(void)
Definition midas.cxx:1484
INT EXPRT cm_watchdog_thread(void *unused)
Definition midas.cxx:7337
INT EXPRT cm_set_experiment_database(HNDLE hDB, HNDLE hKeyClient)
Definition midas.cxx:2939
BOOL EXPRT cm_is_ctrlc_pressed(void)
Definition midas.cxx:5460
INT EXPRT cm_time(DWORD *t)
Definition midas.cxx:1434
INT EXPRT cm_transition_cleanup()
Definition midas.cxx:5275
INT EXPRT cm_set_watchdog_params(BOOL call_watchdog, DWORD timeout)
Definition midas.cxx:3283
INT EXPRT cm_exist(const char *name, BOOL bUnique)
Definition midas.cxx:7528
INT EXPRT cm_set_experiment_semaphore(INT semaphore_alarm, INT semaphore_elog, INT semaphore_history, INT semaphore_msg)
Definition midas.cxx:2958
INT EXPRT el_search_run(int run, char *return_tag)
Definition elog.cxx:950
INT EXPRT el_retrieve(char *tag, char *date, int *run, char *author, char *type, char *system, char *subject, char *text, int *textsize, char *orig_tag, char *reply_tag, char *attachment1, char *attachment2, char *attachment3, char *encoding)
Definition elog.cxx:770
INT EXPRT el_delete_message(const char *tag)
Definition elog.cxx:1014
INT EXPRT el_submit(int run, const char *author, const char *type, const char *system, const char *subject, const char *text, const char *reply_to, const char *encoding, const char *afilename1, const char *buffer1, INT buffer_size1, const char *afilename2, const char *buffer2, INT buffer_size2, const char *afilename3, const char *buffer3, INT buffer_size3, char *tag, INT tag_size)
Definition elog.cxx:124
INT EXPRT el_search_message(char *tag, int *fh, BOOL walk, char *filename, int filename_size)
Definition elog.cxx:500
#define CMD_GET_LAST
Definition midas.h:793
unsigned short int WORD
Definition mcstd.h:49
unsigned int DWORD
Definition mcstd.h:51
void() EVENT_HANDLER(HNDLE buffer_handler, HNDLE request_id, EVENT_HEADER *event_header, void *event_data)
Definition midas.h:918
INT() RPC_HANDLER(INT index, void *prpc_param[])
Definition midas.h:922
struct eqpmnt EQUIPMENT
bool ss_is_valid_utf8(const char *string)
Definition system.cxx:8074
INT ss_dir_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6802
int ss_isnan(double x)
Definition system.cxx:7967
BOOL ss_kbhit()
Definition system.cxx:3664
double ss_disk_size(const char *path)
Definition system.cxx:7054
time_t ss_mktime(struct tm *tms)
Definition system.cxx:3365
DWORD ss_millitime()
Definition system.cxx:3393
int ss_file_exist(const char *path)
Definition system.cxx:7124
INT ss_tape_rskip(INT channel, INT count)
Definition system.cxx:6298
INT ss_tape_write(INT channel, void *pdata, INT count)
Definition system.cxx:6038
int ss_isfin(double x)
Definition system.cxx:7972
INT ss_dirlink_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6878
INT ss_getchar(BOOL reset)
Definition system.cxx:7509
INT ss_tape_rewind(INT channel)
Definition system.cxx:6354
INT ss_tape_fskip(INT channel, INT count)
Definition system.cxx:6238
INT ss_tape_close(INT channel)
Definition system.cxx:5908
double ss_disk_free(const char *path)
Definition system.cxx:6626
time_t ss_file_time(const char *path)
Definition system.cxx:7016
int ss_file_link_exist(const char *path)
Definition system.cxx:7160
std::string ss_getcwd()
Definition system.cxx:5776
INT ss_tape_get_blockn(INT channel)
Definition system.cxx:6574
double ss_file_size(const char *path)
Definition system.cxx:6978
INT ss_tape_status(char *path)
Definition system.cxx:5952
DWORD ss_settime(DWORD seconds)
Definition system.cxx:3475
INT ss_tape_mount(INT channel)
Definition system.cxx:6462
char * ss_getpass(const char *prompt)
Definition system.cxx:7446
INT ss_directio_give_port(INT start, INT end)
Definition system.cxx:7817
void ss_tzset()
Definition system.cxx:3355
INT ss_write_tcp(int sock, const char *buffer, size_t buffer_size)
Definition system.cxx:5352
int ss_dir_exist(const char *path)
Definition system.cxx:7192
void ss_set_screen_size(int x, int y)
Definition system.cxx:7355
INT ss_tape_spool(INT channel)
Definition system.cxx:6406
INT ss_file_remove(const char *path)
Definition system.cxx:6958
INT ss_tape_read(INT channel, void *pdata, INT *count)
Definition system.cxx:6098
int ss_file_copy(const char *src, const char *dst, bool append)
Definition system.cxx:7225
DWORD ss_time()
Definition system.cxx:3462
std::string ss_asctime()
Definition system.cxx:3549
double ss_time_sec()
Definition system.cxx:3467
INT ss_sleep(INT millisec)
Definition system.cxx:3628
INT ss_tape_unmount(INT channel)
Definition system.cxx:6518
double ss_nan()
Definition system.cxx:7946
INT ss_tape_write_eof(INT channel)
Definition system.cxx:6172
bool ss_repair_utf8(char *string)
Definition system.cxx:8157
void ss_clear_screen()
Definition system.cxx:7305
char * ss_crypt(const char *buf, const char *salt)
Definition system.cxx:7897
INT ss_tape_open(char *path, INT oflag, INT *channel)
Definition system.cxx:5817
void ss_printf(INT x, INT y, const char *format,...)
Definition system.cxx:7388
INT ss_directio_lock_port(INT start, INT end)
Definition system.cxx:7853
char * ss_gets(char *string, int size)
Definition system.cxx:7776
void * ss_ctrlc_handler(void(*func)(int))
Definition system.cxx:3899
INT ss_file_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6719
INT EXPRT cm_msg_early_init(void)
Definition midas.cxx:467
INT EXPRT cm_msg_facilities(STRING_LIST *list)
Definition midas.cxx:504
INT EXPRT cm_msg_open_buffer(void)
Definition midas.cxx:474
INT EXPRT cm_msg_close_buffer(void)
Definition midas.cxx:487
INT EXPRT cm_msg_register(EVENT_HANDLER *func)
Definition midas.cxx:1051
INT EXPRT INT EXPRT INT EXPRT cm_msg_flush_buffer(void)
Definition midas.cxx:865
std::string cm_get_error(INT code)
Definition midas.cxx:455
INT EXPRT cm_msg_retrieve(INT n_message, char *message, INT buf_size)
Definition midas.cxx:1334
INT EXPRT cm_msg_retrieve2(const char *facility, time_t t, int min_messages, char **messages, int *num_messages)
Definition midas.cxx:1264
void EXPRT cm_msg_get_logfile(const char *facility, time_t t, std::string *filename, std::string *linkname, std::string *linktarget)
Definition midas.cxx:539
INT EXPRT cm_set_msg_print(INT system_mask, INT user_mask, int(*func)(const char *))
Definition midas.cxx:647
BOOL EXPRT equal_ustring(const char *str1, const char *str2)
Definition odb.cxx:3201
INT db_find_key1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4125
INT db_sprintfh(char *string, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:10983
INT db_remove_open_record(HNDLE hDB, HNDLE hKey, BOOL lock)
Definition odb.cxx:12499
INT db_get_data_index(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT idx, DWORD type)
Definition odb.cxx:6893
INT db_delete_key(HNDLE hDB, HNDLE hKey, BOOL follow_links)
Definition odb.cxx:3856
INT db_send_changed_records()
Definition odb.cxx:13778
INT db_find_link(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4274
INT db_get_value(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, void *data, INT *buf_size, DWORD type, BOOL create)
Definition odb.cxx:5415
INT db_reorder_key(HNDLE hDB, HNDLE hKey, INT idx)
Definition odb.cxx:6361
static const KEY * db_get_parent(const DATABASE_HEADER *pheader, const KEY *pkey, int *pstatus, const char *caller, db_err_msg **msg)
Definition odb.cxx:1030
INT db_save_json(HNDLE hDB, HNDLE hKey, const char *filename, int flags)
Definition odb.cxx:10527
INT db_open_record(HNDLE hDB, HNDLE hKey, void *ptr, INT rec_size, WORD access_mode, void(*dispatcher)(INT, INT, void *), void *info)
Definition odb.cxx:13292
INT db_open_database(const char *xdatabase_name, INT database_size, HNDLE *hDB, const char *client_name)
Definition odb.cxx:1787
INT db_get_open_records(HNDLE hDB, HNDLE hKey, char *str, INT buf_size, BOOL fix)
Definition odb.cxx:5188
INT db_paste_xml(HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
Definition odb.cxx:8998
std::string strcomb1(const char **list)
Definition odb.cxx:598
INT db_save_xml(HNDLE hDB, HNDLE hKey, const char *filename)
Definition odb.cxx:9480
INT db_set_link_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
Definition odb.cxx:7425
INT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size)
Definition odb.cxx:4990
INT db_get_record1(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align, const char *rec_str)
Definition odb.cxx:11806
INT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT *buffer_size, const char *path)
Definition odb.cxx:8217
INT db_set_link_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:7754
INT EXPRT db_set_record2(HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align, const char *rec_str)
BOOL EXPRT strmatch(char *pattern, char *str)
Definition odb.cxx:3235
INT db_get_record_size(HNDLE hDB, HNDLE hKey, INT align, INT *buf_size)
Definition odb.cxx:11615
INT db_get_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
Definition odb.cxx:6539
INT db_create_key(HNDLE hDB, HNDLE hKey, const char *key_name, DWORD type)
Definition odb.cxx:3308
INT db_check_record(HNDLE hDB, HNDLE hKey, const char *keyname, const char *rec_str, BOOL correct)
Definition odb.cxx:12973
INT db_copy_json_save(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10475
INT db_copy_xml(HNDLE hDB, HNDLE hKey, char *buffer, int *buffer_size, bool header)
Definition odb.cxx:9037
MJsonNode * db_scl(HNDLE hDB)
Definition odb.cxx:14112
INT db_save_struct(HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append)
Definition odb.cxx:10626
INT db_get_record(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align)
Definition odb.cxx:11709
INT db_unwatch(HNDLE hDB, HNDLE hKey)
Definition odb.cxx:13888
INT db_set_mode(HNDLE hDB, HNDLE hKey, WORD mode, BOOL recurse)
Definition odb.cxx:8027
INT db_get_next_link(HNDLE hDB, HNDLE hKey, HNDLE *subkey_handle)
Definition odb.cxx:5816
INT db_scan_tree_link(HNDLE hDB, HNDLE hKey, INT level, void(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
Definition odb.cxx:4846
INT EXPRT db_watch(HNDLE hDB, HNDLE hKey, void(*dispatcher)(INT, INT, INT, void *info), void *info)
INT db_save(HNDLE hDB, HNDLE hKey, const char *filename, BOOL bRemote)
Definition odb.cxx:9245
INT db_scan_tree(HNDLE hDB, HNDLE hKey, INT level, INT(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
Definition odb.cxx:4767
INT db_get_key(HNDLE hDB, HNDLE hKey, KEY *key)
Definition odb.cxx:6019
INT db_get_link(HNDLE hDB, HNDLE hKey, KEY *key)
Definition odb.cxx:6072
INT db_load(HNDLE hDB, HNDLE hKeyRoot, const char *filename, BOOL bRemote)
Definition odb.cxx:8126
INT EXPRT db_get_value_string(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, int index, std::string *s, BOOL create, int create_string_length)
Definition odb.cxx:13935
INT db_sprintff(char *string, const char *format, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:10919
INT db_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
Definition odb.cxx:3014
INT db_set_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:7648
INT db_find_keys(HNDLE hDB, HNDLE hKeyRoot, char *odbpath, std::vector< HNDLE > &hKeyVector)
Definition odb.cxx:4586
INT db_save_string(HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append)
Definition odb.cxx:10687
INT db_copy_json_index(HNDLE hDB, HNDLE hKey, int index, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10219
INT db_paste(HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
Definition odb.cxx:8487
INT db_get_key_info(HNDLE hDB, HNDLE hKey, char *name, INT name_size, INT *type, INT *num_values, INT *item_size)
Definition odb.cxx:6191
INT db_close_all_databases(void)
Definition odb.cxx:2360
INT db_set_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
Definition odb.cxx:7215
INT db_enum_link(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
Definition odb.cxx:5725
INT db_copy_json_ls(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10421
char * strcomb(const char **list)
Definition odb.cxx:571
int EXPRT json_write_anything(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end, int level, int must_be_subdir, int flags, time_t timestamp)
Definition odb.cxx:10384
INT db_sprintf(char *string, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:10843
INT db_update_last_activity(DWORD millitime)
Definition odb.cxx:2692
INT db_copy_json_obsolete(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end, int save_keys, int follow_links, int recurse)
Definition odb.cxx:10508
void EXPRT strarrayindex(char *odbpath, int *index1, int *index2)
Definition odb.cxx:3273
INT db_set_data1(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
Definition odb.cxx:7313
INT db_get_data1(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type, INT *num_values)
Definition odb.cxx:6756
INT db_copy_json_values(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end, int omit_names, int omit_last_written, time_t omit_old_timestamp, int preserve_case)
Definition odb.cxx:10443
INT db_set_value(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const void *data, INT data_size, INT num_values, DWORD type)
Definition odb.cxx:5261
INT db_find_key(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4079
INT db_find_link1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4439
INT db_copy_json_array(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10150
MJsonNode * db_sor(HNDLE hDB, const char *root_path)
Definition odb.cxx:14162
INT db_get_link_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
Definition odb.cxx:6656
INT db_rename_key(HNDLE hDB, HNDLE hKey, const char *name)
Definition odb.cxx:6261
BOOL EXPRT ends_with_ustring(const char *str, const char *suffix)
Definition odb.cxx:3222
void json_write(char **buffer, int *buffer_size, int *buffer_end, int level, const char *s, int quoted)
Definition odb.cxx:9527
INT EXPRT db_paste_json(HNDLE hDB, HNDLE hKey, const char *buffer)
INT db_get_key_time(HNDLE hDB, HNDLE hKey, DWORD *delta)
Definition odb.cxx:6132
int db_delete_client_info(HNDLE hDB, int pid)
Definition odb.cxx:2791
INT db_set_value_index(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const void *data, INT data_size, INT idx, DWORD type, BOOL trunc)
Definition odb.cxx:5365
INT db_notify_clients_array(HNDLE hDB, HNDLE hKeys[], INT size)
Definition odb.cxx:12624
INT db_open_record1(HNDLE hDB, HNDLE hKey, void *ptr, INT rec_size, WORD access_mode, void(*dispatcher)(INT, INT, void *), void *info, const char *rec_str)
Definition odb.cxx:13442
INT db_merge_data(HNDLE hDB, HNDLE hKeyRoot, const char *name, void *data, INT data_size, INT num_values, INT type)
Definition odb.cxx:7928
INT db_set_record(HNDLE hDB, HNDLE hKey, void *data, INT buf_size, INT align)
Definition odb.cxx:12292
INT db_set_data_index1(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type, BOOL bNotify)
Definition odb.cxx:7828
INT db_enum_key(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
Definition odb.cxx:5586
INT EXPRT db_resize_string(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, int num_values, int max_string_length)
Definition odb.cxx:14026
INT db_close_record(HNDLE hDB, HNDLE hKey)
Definition odb.cxx:13474
INT db_create_record(HNDLE hDB, HNDLE hKey, const char *orig_key_name, const char *init_str)
Definition odb.cxx:12801
INT db_sscanf(const char *data_str, void *data, INT *data_size, INT i, DWORD tid)
Definition odb.cxx:11314
INT db_unwatch_all()
Definition odb.cxx:13918
INT db_add_open_record(HNDLE hDB, HNDLE hKey, WORD access_mode)
Definition odb.cxx:12364
INT EXPRT db_set_value_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string *s)
Definition odb.cxx:14006
INT db_set_num_values(HNDLE hDB, HNDLE hKey, INT num_values)
Definition odb.cxx:7502
INT db_get_record2(HNDLE hDB, HNDLE hKey, void *data, INT *xbuf_size, INT align, const char *rec_str, BOOL correct)
Definition odb.cxx:12170
INT EXPRT db_load_json(HNDLE hdb, HNDLE key_handle, const char *filename)
INT db_create_link(HNDLE hDB, HNDLE hKey, const char *link_name, const char *destination)
Definition odb.cxx:3601
INT db_close_database(HNDLE hDB)
Definition odb.cxx:2152
INT db_protect_database(HNDLE hDB)
Definition odb.cxx:3167
INT EXPRT db_paste_json_node(HNDLE hDB, HNDLE hKey, int index, const MJsonNode *json_node)
INT EXPRT rpc_add_allowed_host(const char *hostname)
Definition midas.cxx:15243
void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags)
Definition midas.cxx:11714
INT EXPRT rpc_client_connect(const char *host_name, INT midas_port, const char *client_name, HNDLE *hConnection)
Definition midas.cxx:12020
INT EXPRT rpc_register_server(int port, int *plsock, int *pport)
Definition midas.cxx:14546
INT EXPRT rpc_client_disconnect(HNDLE hConn, BOOL bShutdown)
Definition midas.cxx:12684
INT EXPRT rpc_client_call(HNDLE hConn, DWORD routine_id,...)
Definition midas.cxx:13480
INT EXPRT rpc_register_functions(const RPC_LIST *new_list, RPC_HANDLER func)
Definition midas.cxx:11835
INT EXPRT rpc_set_timeout(HNDLE hConn, int timeout_msec, int *old_timeout_msec=NULL)
Definition midas.cxx:13006
INT EXPRT rpc_server_connect(const char *host_name, const char *exp_name)
Definition midas.cxx:12389
std::string rpc_get_name()
Definition midas.cxx:13092
bool EXPRT rpc_is_remote(void)
Definition midas.cxx:12769
void EXPRT rpc_debug_printf(const char *format,...)
Definition midas.cxx:13169
const char EXPRT * rpc_tid_name_old(INT id)
Definition midas.cxx:11779
INT EXPRT cm_query_transition(int *transition, int *run_number, int *trans_time)
Definition midas.cxx:14128
INT EXPRT rpc_server_loop(void)
Definition midas.cxx:15851
INT EXPRT rpc_clear_allowed_hosts(void)
Definition midas.cxx:15218
INT EXPRT rpc_test_rpc()
Definition midas.cxx:15054
std::string rpc_get_mserver_hostname()
Definition midas.cxx:12813
INT EXPRT rpc_get_hw_type()
Definition midas.cxx:12842
bool EXPRT rpc_is_connected(void)
Definition midas.cxx:12791
INT EXPRT rpc_call(DWORD routine_id,...)
Definition midas.cxx:13671
const char EXPRT * rpc_tid_name(INT id)
Definition midas.cxx:11772
INT EXPRT rpc_flush_event(void)
Definition midas.cxx:14046
INT EXPRT rpc_register_client(const char *name, RPC_LIST *list)
Definition midas.cxx:11816
INT EXPRT rpc_server_shutdown(void)
Definition midas.cxx:16191
INT EXPRT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode)
Definition midas.cxx:13909
INT EXPRT rpc_get_timeout(HNDLE hConn)
Definition midas.cxx:12981
INT EXPRT rpc_set_debug(void(*func)(const char *), INT mode)
Definition midas.cxx:13142
INT EXPRT rpc_name_tid(const char *name)
Definition midas.cxx:11786
bool EXPRT rpc_is_mserver(void)
Definition midas.cxx:12826
INT EXPRT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event)
Definition midas.cxx:13927
INT EXPRT rpc_send_event_sg(INT buffer_handle, int sg_n, const char *const sg_ptr[], const size_t sg_len[])
Definition midas.cxx:13933
INT EXPRT rpc_set_name(const char *name)
Definition midas.cxx:13116
INT rpc_get_convert_flags(void)
Definition midas.cxx:13038
INT EXPRT rpc_tid_size(INT id)
Definition midas.cxx:11765
INT EXPRT rpc_check_allowed_host(const char *hostname)
Definition midas.cxx:15272
void EXPRT rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags)
Definition midas.cxx:11689
void ** info
Definition fesimdaq.cxx:41
INT channel
HNDLE hKey
char exp_name[NAME_LENGTH]
Definition mana.cxx:243
INT run_number[2]
Definition mana.cxx:246
DWORD n[4]
Definition mana.cxx:247
INT index
Definition mana.cxx:271
char param[10][256]
Definition mana.cxx:250
void * data
Definition mana.cxx:268
INT odb_size
Definition analyzer.cxx:46
INT type
Definition mana.cxx:269
INT bor(INT run_number, char *error)
Definition mana.cxx:1675
HNDLE hDB
main ODB handle
Definition mana.cxx:207
INT eor(INT run_number, char *error)
Definition mana.cxx:1914
char host_name[HOST_NAME_LENGTH]
Definition mana.cxx:242
BOOL create
Definition mchart.cxx:39
double count
Definition mdump.cxx:33
KEY key
Definition mdump.cxx:34
char buffer_name[NAME_LENGTH]
Definition mevb.cxx:45
DWORD stop_time
Definition mevb.cxx:55
const char * frontend_file_name
The frontend file name, don't change it.
Definition feudp.cxx:23
const char * frontend_name
The frontend name (client name) as seen by other MIDAS clients.
Definition feudp.cxx:22
#define JSFLAG_RECURSE
Definition midas.h:1722
unsigned short UINT16
Definition midas.h:138
#define MAX_CLIENTS
Definition midas.h:274
INT EXPRT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format,...) MATTRPRINTF(5
INT HNDLE
Definition midas.h:132
bool EXPRT ends_with_char(const std::string &s, char c)
Definition midas.cxx:403
INT EXPRT bm_get_buffer_level(INT buffer_handle, INT *n_bytes)
Definition midas.cxx:7846
INT midas_thread_t
Definition midas.h:179
DWORD BOOL
Definition midas.h:105
int hs_image_retrieve(std::string image_name, time_t start, time_t stop, std::vector< time_t > &vtime, std::vector< std::string > &vfilename)
void EXPRT close_subfolder(void)
unsigned short int WORD
Definition midas.h:98
INT EXPRT bm_get_buffer_info(INT buffer_handle, BUFFER_HEADER *buffer_header)
Definition midas.cxx:7799
char INT8
Definition midas.h:137
INT EXPRT bm_init_buffer_counters(INT buffer_handle)
Definition midas.cxx:8071
int INT
Definition midas.h:129
#define MAX_RPC_PARAMS
Definition midas.h:1593
void EXPRT open_subfolder(const char *name)
void EXPRT add_data_dir(char *result, char *file)
Definition mana.cxx:424
#define MATTRPRINTF(a, b)
Definition midas.h:221
std::string msprintf(const char *format,...) MATTRPRINTF(1
unsigned char BYTE
Definition midas.h:97
std::string EXPRT cm_transition_name(int transition)
Definition midas.cxx:133
unsigned long long UINT64
Definition midas.h:142
short INT16
Definition midas.h:139
struct history_struct HISTORY
int INT32
Definition midas.h:141
long long INT64
Definition midas.h:143
unsigned int DWORD
Definition midas.h:100
void * dbg_calloc(unsigned int size, unsigned int count, char *file, int line)
Definition midas.cxx:341
#define FALSE
Definition midas.h:183
INT EXPRT rpc_register_function(INT id, RPC_HANDLER func)
INT device_driver(DEVICE_DRIVER *device_driver, INT cmd,...)
#define EXPRT
Definition midas.h:1734
unsigned char UINT8
Definition midas.h:136
#define MAX_EVENT_REQUESTS
Definition midas.h:275
void dbg_free(void *adr, char *file, int line)
Definition midas.cxx:351
struct eqpmnt * PEQUIPMENT
Definition midas.h:1149
INT EXPRT INT EXPRT cm_msg1(INT message_type, const char *filename, INT line, const char *facility, const char *routine, const char *format,...) MATTRPRINTF(6
#define JSFLAG_SAVE_KEYS
Definition midas.h:1720
std::vector< std::string > STRING_LIST
Definition midas.h:246
void * dbg_malloc(unsigned int size, char *file, int line)
Definition midas.cxx:306
INT MUTEX_T
Definition midas.h:237
int EXPRT cm_write_event_to_odb(HNDLE hDB, HNDLE hKey, const EVENT_HEADER *pevent, INT format)
Definition midas.cxx:17731
unsigned int UINT32
Definition midas.h:140
void EXPRT lock_histo(INT id)
Definition mana.cxx:3523
#define NAME_LENGTH
Definition midas.h:272
void EXPRT test_register(ANA_TEST *t)
Definition mana.cxx:546
#define trigger_mask
#define end
#define variable(name)
#define message(type, str)
HNDLE hdb
Definition midas_macro.h:21
#define event_id
#define name(x)
Definition midas_macro.h:24
INT serial
Definition minife.c:20
struct callback_addr callback
Definition mserver.cxx:22
MUTEX_T * tm
Definition odbedit.cxx:39
DWORD run
Definition odbhist.cxx:39
char str[256]
Definition odbhist.cxx:33
char file_name[256]
Definition odbhist.cxx:41
unsigned int DWORD
Definition odbhist.cxx:30
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
BOOL write_system_message
Definition midas.h:1463
DWORD system_message_last
Definition midas.h:1466
BOOL stop_run
Definition midas.h:1470
INT execute_interval
Definition midas.h:1468
DWORD execute_last
Definition midas.h:1469
BOOL alarm_sound
Definition midas.h:1473
INT system_message_interval
Definition midas.h:1465
BOOL write_elog_message
Definition midas.h:1464
INT type
Definition midas.h:1497
DWORD trigger_count
Definition midas.h:1500
INT check_interval
Definition midas.h:1498
DWORD trigger_count_required
Definition midas.h:1501
DWORD checked_last
Definition midas.h:1499
INT triggered
Definition midas.h:1496
BOOL active
Definition midas.h:1495
const char ** init_str
Definition midas.h:1264
BOOL enabled
Definition midas.h:1265
INT param_size
Definition midas.h:1263
void * histo_folder
Definition midas.h:1266
void * parameters
Definition midas.h:1262
BOOL clear_histos
Definition midas.h:1317
BOOL histo_dump
Definition midas.h:1315
BOOL events_to_odb
Definition midas.h:1319
DWORD previous_count
Definition midas.h:1340
DWORD count
Definition midas.h:1339
BOOL registered
Definition midas.h:1338
BOOL value
Definition midas.h:1341
AR_STATS ar_stats
Definition midas.h:1307
HNDLE request_id
Definition midas.h:1296
BANK_LIST * bank_list
Definition midas.h:1290
HNDLE hkey_variables
Definition midas.h:1297
char ** init_string
Definition midas.h:1293
HNDLE hkey_common
Definition midas.h:1298
ANA_MODULE ** ana_module
Definition midas.h:1289
void * addr
Definition midas.h:1299
INT rwnt_buffer_size
Definition midas.h:1291
AR_INFO ar_info
Definition midas.h:1287
DWORD events_received
Definition midas.h:1305
DWORD events_written
Definition midas.h:1306
HNDLE buffer_handle
Definition midas.h:1295
BOOL enabled
Definition midas.h:1274
INT sampling_type
Definition midas.h:1272
INT trigger_mask
Definition midas.h:1271
INT event_id
Definition midas.h:1270
double events_written
Definition midas.h:1282
double events_per_sec
Definition midas.h:1281
double events_received
Definition midas.h:1280
DWORD type
Definition midas.h:1227
DWORD data_size
Definition midas.h:1228
DWORD reserved
Definition midas.h:1229
DWORD data_size
Definition midas.h:1222
DWORD type
Definition midas.h:1221
DWORD flags
Definition midas.h:1210
DWORD data_size
Definition midas.h:1209
void * addr
Definition midas.h:1244
DWORD size
Definition midas.h:1241
HNDLE def_key
Definition midas.h:1246
char ** init_str
Definition midas.h:1242
WORD type
Definition midas.h:1240
DWORD n_data
Definition midas.h:1245
BOOL output_flag
Definition midas.h:1243
Definition midas.h:1213
WORD type
Definition midas.h:1215
WORD data_size
Definition midas.h:1216
INT unused1
Definition midas.h:944
INT num_sent_events
Definition midas.h:943
INT unused0
Definition midas.h:937
float unused2
Definition midas.h:945
DWORD watchdog_timeout
Definition midas.h:951
INT write_wait
Definition midas.h:947
BOOL read_wait
Definition midas.h:946
DWORD last_activity
Definition midas.h:950
BOOL all_flag
Definition midas.h:949
BOOL wake_up
Definition midas.h:948
INT max_request_index
Definition midas.h:941
INT read_pointer
Definition midas.h:940
INT num_received_events
Definition midas.h:942
INT num_in_events
Definition midas.h:964
INT write_pointer
Definition midas.h:963
INT num_clients
Definition midas.h:959
INT max_client_index
Definition midas.h:960
INT num_out_events
Definition midas.h:965
INT read_pointer
Definition midas.h:962
HNDLE semaphore
Definition midas.h:1003
double bytes_read
Definition midas.h:1021
std::timed_mutex buffer_mutex
Definition midas.h:988
size_t read_cache_rp
Definition midas.h:996
std::timed_mutex read_cache_mutex
Definition midas.h:993
BOOL get_all_flag
Definition midas.h:1008
int last_count_lock
Definition midas.h:1016
INT client_index
Definition midas.h:989
char client_name[NAME_LENGTH]
Definition midas.h:990
std::timed_mutex write_cache_mutex
Definition midas.h:998
size_t shm_size
Definition midas.h:1005
char * read_cache
Definition midas.h:995
int max_requested_space
Definition midas.h:1019
int count_sent
Definition midas.h:1012
size_t write_cache_rp
Definition midas.h:1001
int client_count_write_wait[MAX_CLIENTS]
Definition midas.h:1022
int count_write_wait
Definition midas.h:1014
int wait_client_index
Definition midas.h:1018
BOOL locked
Definition midas.h:1007
size_t write_cache_wp
Definition midas.h:1002
DWORD time_write_wait
Definition midas.h:1015
int count_read
Definition midas.h:1020
BOOL callback
Definition midas.h:1006
char * write_cache
Definition midas.h:1000
BUFFER_HEADER * buffer_header
Definition midas.h:992
size_t read_cache_wp
Definition midas.h:997
std::atomic< size_t > read_cache_size
Definition midas.h:994
std::atomic< size_t > write_cache_size
Definition midas.h:999
double bytes_sent
Definition midas.h:1013
DWORD wait_start_time
Definition midas.h:1017
INT shm_handle
Definition midas.h:1004
char buffer_name[NAME_LENGTH]
Definition midas.h:991
std::atomic_bool attached
Definition midas.h:987
int count_lock
Definition midas.h:1011
DWORD client_time_write_wait[MAX_CLIENTS]
Definition midas.h:1023
void * bd_info
Definition midas.h:1071
INT n_channels
Definition midas.h:1081
midas_thread_t thread_id
Definition midas.h:1082
DD_MT_CHANNEL * channel
Definition midas.h:1084
DWORD def_offset
Definition midas.h:1369
DWORD event_id
Definition midas.h:1367
std::string * pequipment_name
Definition midas.h:1166
EQUIPMENT_INFO * pequipment
Definition midas.h:1165
void * dd_info
Definition midas.h:1161
DD_MT_BUFFER * mt_buffer
Definition midas.h:1162
INT stop_thread
Definition midas.h:1163
MUTEX_T * mutex
Definition midas.h:1164
BOOL enabled
Definition midas.h:1160
BOOL priority_read
Definition midas.h:1167
DWORD flags
Definition midas.h:1159
double event_limit
Definition midas.h:1098
WORD trigger_mask
Definition midas.h:1090
WORD event_id
Definition midas.h:1089
DWORD num_subevents
Definition midas.h:1099
double events_per_sec
Definition midas.h:1137
double events_sent
Definition midas.h:1136
double kbytes_per_sec
Definition midas.h:1138
short int event_id
Definition midas.h:852
DWORD data_size
Definition midas.h:856
DWORD serial_number
Definition midas.h:854
DWORD time_stamp
Definition midas.h:855
short int trigger_mask
Definition midas.h:853
short int event_id
Definition midas.h:929
short int trigger_mask
Definition midas.h:930
INT sampling_type
Definition midas.h:931
BOOL valid
Definition midas.h:928
DWORD def_offset
Definition midas.h:1362
DWORD record_type
Definition midas.h:1359
DWORD time
Definition midas.h:1361
DWORD data_size
Definition midas.h:1363
DWORD event_id
Definition midas.h:1360
DWORD time
Definition midas.h:1374
DWORD offset
Definition midas.h:1375
DWORD event_id
Definition midas.h:1373
Definition midas.h:1026
INT num_values
Definition midas.h:1028
DWORD type
Definition midas.h:1027
WORD notify_count
Definition midas.h:1034
INT total_size
Definition midas.h:1031
WORD access_mode
Definition midas.h:1033
INT last_written
Definition midas.h:1037
INT parent_keylist
Definition midas.h:1036
INT next_key
Definition midas.h:1035
INT item_size
Definition midas.h:1032
INT data
Definition midas.h:1030
INT num_keys
Definition midas.h:1042
INT parent
Definition midas.h:1041
INT first_key
Definition midas.h:1043
INT watchdog_timeout
Definition midas.h:1430
BOOL required
Definition midas.h:1429
BOOL auto_restart
Definition midas.h:1435
DWORD check_interval
Definition midas.h:1431
BOOL auto_stop
Definition midas.h:1434
BOOL auto_start
Definition midas.h:1433
DWORD first_failed
Definition midas.h:1437
INT id
Definition midas.h:1596
RPC_HANDLER * dispatch
Definition midas.h:1599
const char * name
Definition midas.h:1597
WORD flags
Definition midas.h:1589
WORD tid
Definition midas.h:1588
INT n
Definition midas.h:1590
INT transition_in_progress
Definition midas.h:1399
INT requested_transition
Definition midas.h:1401
DWORD start_time_binary
Definition midas.h:1403
INT state
Definition midas.h:1396
DWORD stop_time_binary
Definition midas.h:1405
INT online_mode
Definition midas.h:1397
INT start_abort
Definition midas.h:1400
INT run_number
Definition midas.h:1398
Definition midas.h:1232
DWORD type
Definition midas.h:1234
DWORD n_data
Definition midas.h:1235
DWORD subevent_number
Definition midas.h:1186
DWORD serial_number
Definition midas.h:1185
DWORD odb_out
Definition midas.h:1187
DWORD bytes_sent
Definition midas.h:1189
DWORD events_sent
Definition midas.h:1190
EQUIPMENT_STATS stats
Definition midas.h:1192
void * event_descrip
Definition midas.h:1176
EQUIPMENT_INFO info
Definition midas.h:1172
DWORD last_called
Definition midas.h:1179
HNDLE buffer_handle
Definition midas.h:1183
char name[NAME_LENGTH]
Definition midas.h:1171
DWORD last_idle
Definition midas.h:1180
DWORD events_collected
Definition midas.h:1191
DWORD odb_in
Definition midas.h:1188
HNDLE hkey_variables
Definition midas.h:1184
void * cd_info
Definition midas.h:1177
INT format
Definition midas.h:1182
INT(* cd)(INT cmd, PEQUIPMENT)
Definition midas.h:1174
INT(* readout)(char *, INT)
Definition midas.h:1173
DWORD poll_count
Definition midas.h:1181
DEVICE_DRIVER * driver
Definition midas.h:1175
INT status
Definition midas.h:1178
DWORD n_tag
Definition midas.h:1381
std::string def_fn
Definition midas.h:1385
DWORD base_time
Definition midas.h:1389
std::string index_fn
Definition midas.h:1384
std::string hist_fn
Definition midas.h:1383
std::string event_name
Definition midas.h:1380
DWORD def_offset
Definition midas.h:1390
DWORD event_id
Definition midas.h:1379
char c
Definition system.cxx:1310
static te_expr * list(state *s)
Definition tinyexpr.c:567