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
1109
1112#define EQUIPMENT_COMMON_STR "\
1113Event ID = WORD : 0\n\
1114Trigger mask = WORD : 0\n\
1115Buffer = STRING : [32] SYSTEM\n\
1116Type = INT : 0\n\
1117Source = INT : 0\n\
1118Format = STRING : [8] FIXED\n\
1119Enabled = BOOL : 0\n\
1120Read on = INT : 0\n\
1121Period = INT : 0\n\
1122Event limit = DOUBLE : 0\n\
1123Num subevents = DWORD : 0\n\
1124Log history = INT : 0\n\
1125Frontend host = STRING : [32] \n\
1126Frontend name = STRING : [32] \n\
1127Frontend file name = STRING : [256] \n\
1128Status = STRING : [256] \n\
1129Status color = STRING : [32] \n\
1130Hidden = BOOL : 0\n\
1131Write cache size = INT : 100000\n\
1132"
1133
1137typedef struct {
1142
1145#define EQUIPMENT_STATISTICS_STR "\
1146Events sent = DOUBLE : 0\n\
1147Events per sec. = DOUBLE : 0\n\
1148kBytes per sec. = DOUBLE : 0\n\
1149"
1150
1151typedef struct eqpmnt *PEQUIPMENT;
1152
1171
1196
1200
1201/*---- Banks -------------------------------------------------------*/
1202
1203#define BANK_FORMAT_VERSION 1
1204#define BANK_FORMAT_32BIT (1<<4)
1205#define BANK_FORMAT_64BIT_ALIGNED (1<<5)
1214
1215typedef struct {
1216 char name[4];
1219} BANK;
1220
1221typedef struct {
1222 char name[4];
1225} BANK32;
1226
1233
1234typedef struct {
1238} TAG;
1239
1250
1253/*---- Analyzer request --------------------------------------------*/
1254
1255typedef struct {
1257 char author[NAME_LENGTH];
1258 INT(*analyzer) (EVENT_HEADER *, void *);
1262 INT(*init) (void);
1263 INT(*exit) (void);
1266 const char **init_str;
1269} ANA_MODULE;
1270
1280
1281typedef struct {
1285} AR_STATS;
1286
1312
1313/* output file information, maps to /<analyzer>/Output */
1314typedef struct {
1315 char filename[256];
1318 char histo_dump_filename[256];
1320 char last_histo_filename[256];
1322 char global_memory_name[8];
1324
1325#define ANA_OUTPUT_INFO_STR "\
1326Filename = STRING : [256] run%05d.asc\n\
1327RWNT = BOOL : 0\n\
1328Histo Dump = BOOL : 0\n\
1329Histo Dump Filename = STRING : [256] his%05d.rz\n\
1330Clear histos = BOOL : 1\n\
1331Last Histo Filename = STRING : [256] last.rz\n\
1332Events to ODB = BOOL : 1\n\
1333Global Memory Name = STRING : [8] ONLN\n\
1334"
1335
1336/*---- Tests -------------------------------------------------------*/
1337
1345
1346#define SET_TEST(t, v) { if (!t.registered) test_register(&t); t.value = (v); }
1347#define TEST(t) (t.value)
1348
1349#ifdef DEFINE_TESTS
1350#define DEF_TEST(t) ANA_TEST t = { #t, 0, 0, FALSE };
1351#else
1352#define DEF_TEST(t) extern ANA_TEST t;
1353#endif
1354
1355/*---- History structures ------------------------------------------*/
1356
1357#define RT_DATA (*((DWORD *) "HSDA"))
1358#define RT_DEF (*((DWORD *) "HSDF"))
1359
1360typedef struct {
1361 DWORD record_type; /* RT_DATA or RT_DEF */
1364 DWORD def_offset; /* place of definition */
1365 DWORD data_size; /* data following this header in bytes */
1366} HIST_RECORD;
1367
1368typedef struct {
1370 char event_name[NAME_LENGTH];
1372} DEF_RECORD;
1373
1379
1380typedef struct history_struct {
1382 std::string event_name;
1385 std::string hist_fn;
1386 std::string index_fn;
1387 std::string def_fn;
1388 int hist_fh = 0;
1389 int index_fh = 0;
1390 int def_fh = 0;
1394
1395/*---- ODB runinfo -------------------------------------------------*/
1396
1409
1410#define RUNINFO_STR(_name) const char *_name[] = {\
1411"[.]",\
1412"State = INT : 1",\
1413"Online Mode = INT : 1",\
1414"Run number = INT : 0",\
1415"Transition in progress = INT : 0",\
1416"Start abort = INT : 0",\
1417"Requested transition = INT : 0",\
1418"Start time = STRING : [32] Tue Sep 09 15:04:42 1997",\
1419"Start time binary = DWORD : 0",\
1420"Stop time = STRING : [32] Tue Sep 09 15:04:42 1997",\
1421"Stop time binary = DWORD : 0",\
1422"",\
1423NULL }
1424
1425/*---- Alarm system ------------------------------------------------*/
1426
1427/********************************************************************/
1441
1442#define AT_INTERNAL 1
1443#define AT_PROGRAM 2
1444#define AT_EVALUATED 3
1445#define AT_PERIODIC 4
1446#define AT_LAST 4
1448#define PROGRAM_INFO_STR(_name) const char *_name[] = {\
1449"[.]",\
1450"Required = BOOL : n",\
1451"Watchdog timeout = INT : 10000",\
1452"Check interval = DWORD : 180000",\
1453"Start command = STRING : [256] ",\
1454"Auto start = BOOL : n",\
1455"Auto stop = BOOL : n",\
1456"Auto restart = BOOL : n",\
1457"Alarm class = STRING : [32] ",\
1458"First failed = DWORD : 0",\
1459"",\
1460NULL }
1461
1477
1478#define ALARM_CLASS_STR(_name) const char *_name[] = {\
1479"[.]",\
1480"Write system message = BOOL : y",\
1481"Write Elog message = BOOL : n",\
1482"System message interval = INT : 60",\
1483"System message last = DWORD : 0",\
1484"Execute command = STRING : [256] ",\
1485"Execute interval = INT : 0",\
1486"Execute last = DWORD : 0",\
1487"Stop run = BOOL : n",\
1488"Display BGColor = STRING : [32] red",\
1489"Display FGColor = STRING : [32] black",\
1490"Alarm sound = BOOL : y"\
1491"",\
1492NULL }
1493
1496typedef struct {
1504 char time_triggered_first[32];
1505 char time_triggered_last[32];
1506 char condition[256];
1507 char alarm_class[32];
1508 char alarm_message[80];
1509} ALARM;
1510
1511#define ALARM_ODB_STR(_name) const char *_name[] = {\
1512"[.]",\
1513"Active = BOOL : n",\
1514"Triggered = INT : 0",\
1515"Type = INT : 3",\
1516"Check interval = INT : 60",\
1517"Checked last = DWORD : 0",\
1518"Trigger count = DWORD : 0",\
1519"Trigger count required = DWORD : 0",\
1520"Time triggered first = STRING : [32] ",\
1521"Time triggered last = STRING : [32] ",\
1522"Condition = STRING : [256] /Runinfo/Run number > 100",\
1523"Alarm Class = STRING : [32] Alarm",\
1524"Alarm Message = STRING : [80] Run number became too large",\
1525"",\
1526NULL }
1527
1528#define ALARM_PERIODIC_STR(_name) const char *_name[] = {\
1529"[.]",\
1530"Active = BOOL : n",\
1531"Triggered = INT : 0",\
1532"Type = INT : 4",\
1533"Check interval = INT : 28800",\
1534"Checked last = DWORD : 0",\
1535"Trigger count = DWORD : 0",\
1536"Trigger count required = DWORD : 0",\
1537"Time triggered first = STRING : [32] ",\
1538"Time triggered last = STRING : [32] ",\
1539"Condition = STRING : [256] ",\
1540"Alarm Class = STRING : [32] Warning",\
1541"Alarm Message = STRING : [80] Please do your shift checks",\
1542"",\
1543NULL }
1544
1545/*---- malloc/free routines for debugging --------------------------*/
1546
1547#ifdef _MEM_DBG
1548#define M_MALLOC(x) dbg_malloc((x), __FILE__, __LINE__)
1549#define M_CALLOC(x,y) dbg_calloc((x), (y), __FILE__, __LINE__)
1550#define M_FREE(x) dbg_free ((x), __FILE__, __LINE__)
1551#else
1552#define M_MALLOC(x) malloc(x)
1553#define M_CALLOC(x,y) calloc(x,y)
1554#define M_FREE(x) free(x)
1555#endif
1556
1557void *dbg_malloc(unsigned int size, char *file, int line);
1558void *dbg_calloc(unsigned int size, unsigned int count, char *file, int line);
1559void dbg_free(void *adr, char *file, int line);
1560
1561/*---- CERN libray -------------------------------------------------*/
1562
1563#ifdef extname
1564#define PAWC_NAME pawc_
1565#else
1566#define PAWC_NAME PAWC
1567#endif
1568
1569#define PAWC_DEFINE(size) \
1570INT PAWC_NAME[size/4]; \
1571INT pawc_size = size
1572
1573/* bug in ROOT include files */
1574#undef GetCurrentTime
1575
1576/*---- RPC ---------------------------------------------------------*/
1577
1580#define RPC_IN (1 << 0)
1581#define RPC_OUT (1 << 1)
1582#define RPC_POINTER (1 << 2)
1583#define RPC_FIXARRAY (1 << 3)
1584#define RPC_VARARRAY (1 << 4)
1585#define RPC_OUTGOING (1 << 5)
1586
1589typedef struct {
1593} RPC_PARAM;
1594
1595#define MAX_RPC_PARAMS 20
1596
1603
1606#define RPC_MIN_ID 1
1607#define RPC_MAX_ID 9999
1608
1611#define CF_ENDIAN (1<<0)
1612#define CF_IEEE2VAX (1<<1)
1613#define CF_VAX2IEEE (1<<2)
1614//#define CF_ASCII (1<<3)
1615
1616#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1617#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1618
1619#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1620#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1621
1622#define CINT(_i) (* ((INT *) prpc_param[_i]))
1623#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1624
1625#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1626#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1627
1628#define CLONG(_i) (* ((long *) prpc_param[_i]))
1629#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1630
1631#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1632#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1633
1634#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1635#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1636
1637#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1638#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1639
1640#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1641#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1642
1643#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1644#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1645
1646#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1647#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1648
1649#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1650#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1651
1652#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1653#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1654
1655#define CINT(_i) (* ((INT *) prpc_param[_i]))
1656#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1657
1658#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1659#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1660
1661#define CLONG(_i) (* ((long *) prpc_param[_i]))
1662#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1663
1664#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1665#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1666
1667#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1668#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1669
1670#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1671#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1672
1673#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1674#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1675
1676#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1677#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1678
1679#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1680#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1681
1682
1683
1684#define cBYTE (* ((BYTE *) prpc_param[--n_param]))
1685#define cPBYTE ( ((BYTE *) prpc_param[--n_param]))
1686
1687#define cSHORT (* ((short *) prpc_param[--n_param]))
1688#define cPSHORT ( ((short *) prpc_param[--n_param]))
1689
1690#define cINT (* ((INT *) prpc_param[--n_param]))
1691#define cPINT ( ((INT *) prpc_param[--n_param]))
1692
1693#define cWORD (* ((WORD *) prpc_param[--n_param]))
1694#define cPWORD ( ((WORD *) prpc_param[--n_param]))
1695
1696#define cLONG (* ((long *) prpc_param[--n_param]))
1697#define cPLONG ( ((long *) prpc_param[--n_param]))
1698
1699#define cDWORD (* ((DWORD *) prpc_param[--n_param]))
1700#define cPDWORD ( ((DWORD *) prpc_param[--n_param]))
1701
1702#define cHNDLE (* ((HNDLE *) prpc_param[--n_param]))
1703#define cPHNDLE ( ((HNDLE *) prpc_param[--n_param]))
1704
1705#define cBOOL (* ((BOOL *) prpc_param[--n_param]))
1706#define cPBOOL ( ((BOOL *) prpc_param[--n_param]))
1707
1708#define cFLOAT (* ((float *) prpc_param[--n_param]))
1709#define cPFLOAT ( ((float *) prpc_param[--n_param]))
1710
1711#define cDOUBLE (* ((double *) prpc_param[--n_param]))
1712#define cPDOUBLE ( ((double *) prpc_param[--n_param]))
1713
1714#define cSTRING ( ((char *) prpc_param[--n_param]))
1715#define cARRAY ( ((void *) prpc_param[--n_param]))
1716
1719#define JS_LEVEL_0 0
1720#define JS_LEVEL_1 1
1721#define JS_MUST_BE_SUBDIR 1
1722#define JSFLAG_SAVE_KEYS (1<<1)
1723#define JSFLAG_FOLLOW_LINKS (1<<2)
1724#define JSFLAG_RECURSE (1<<3)
1725#define JSFLAG_LOWERCASE (1<<4)
1726#define JSFLAG_OMIT_NAMES (1<<5)
1727#define JSFLAG_OMIT_LAST_WRITTEN (1<<6)
1728#define JSFLAG_OMIT_OLD (1<<7)
1729
1730/*---- Function declarations ---------------------------------------*/
1731
1732/* make functions under WinNT dll exportable */
1733#if defined(OS_WINNT) && defined(MIDAS_DLL)
1734#define EXPRT __declspec(dllexport)
1735#else
1736#define EXPRT
1737#endif
1738
1739 /*---- common routines ----*/
1740 std::string cm_get_error(INT code);
1741 const char* EXPRT cm_get_version(void);
1742 const char* EXPRT cm_get_revision(void);
1743 [[deprecated("Use std::string cm_get_experiment_name();")]]
1745 std::string cm_get_experiment_name();
1747 INT EXPRT cm_get_environment(std::string *host_name, std::string *exp_name);
1750 [[deprecated("Use std::string cm_get_exptab_filename();")]]
1751 INT EXPRT cm_get_exptab_filename(char* filename, int filename_size);
1752 std::string cm_get_exptab_filename();
1753 [[deprecated("Please use the std::string version of this function")]]
1754 INT EXPRT cm_get_exptab(const char* exp_name, char* expdir, int expdir_size, char* expuser, int expuser_size);
1755 INT EXPRT cm_get_exptab(const char* exp_name, std::string* expdir, std::string* expuser);
1757 INT EXPRT cm_select_experiment_remote(const char *host_name, std::string *exp_name);
1759 INT EXPRT cm_connect_experiment(const char *host_name, const char *exp_name,
1760 const char *client_name, void (*func) (char *));
1761 INT EXPRT cm_connect_experiment1(const char *host_name, const char *exp_name,
1762 const char *client_name,
1763 void (*func) (char *), INT odb_size,
1764 DWORD watchdog_timeout);
1767 int sequence_number);
1771 INT EXPRT cm_query_transition(int *transition, int *run_number, int *trans_time);
1774 INT EXPRT cm_transition(INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag);
1776 std::string EXPRT cm_transition_name(int transition);
1778 INT EXPRT cm_register_function(INT id, INT(*func) (INT, void **));
1779 INT EXPRT cm_connect_client(const char *client_name, HNDLE * hConn);
1786 const char *host_name, char *client_name,
1787 INT computer_id, const char *password, DWORD watchdog_timeout);
1788#define HAVE_CM_GET_CLIENT_NAME 1
1789 std::string EXPRT cm_get_client_name();
1793 INT EXPRT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD * timeout, DWORD * last);
1794 INT EXPRT cm_watchdog_thread(void*unused);
1797 INT EXPRT cm_shutdown(const char *name, BOOL bUnique);
1798 INT EXPRT cm_exist(const char *name, BOOL bUnique);
1799 INT EXPRT cm_cleanup(const char *client_name, BOOL ignore_timeout);
1801#define HAVE_CM_PERIODIC_TASKS 1
1803 INT EXPRT cm_execute(const char *command, char *result, INT buf_size);
1805 [[deprecated("Please use the std::string version of this function")]]
1806 INT EXPRT cm_asctime(char *str, INT buf_size);
1807 std::string EXPRT cm_asctime();
1808 INT EXPRT cm_time(DWORD * t);
1810 void EXPRT cm_ack_ctrlc_pressed(void);
1812 int EXPRT cm_write_event_to_odb(HNDLE hDB, HNDLE hKey, const EVENT_HEADER* pevent, INT format);
1813
1814 INT EXPRT cm_set_msg_print(INT system_mask, INT user_mask, int (*func) (const char *));
1815 INT EXPRT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format, ...) MATTRPRINTF(5,6);
1816 INT EXPRT cm_msg1(INT message_type, const char *filename, INT line, const char *facility, const char *routine, const char *format, ...) MATTRPRINTF(6,7);
1819 INT EXPRT cm_msg_retrieve(INT n_message, char *message, INT buf_size);
1822 void EXPRT cm_msg_get_logfile(const char *facility, time_t t, std::string* filename, std::string* linkname, std::string* linktarget);
1826
1827 BOOL EXPRT equal_ustring(const char *str1, const char *str2);
1829 bool EXPRT ends_with_char(const std::string& s, char c);
1830 BOOL EXPRT strmatch(char* pattern, char*str);
1831 void EXPRT strarrayindex(char* odbpath, int* index1, int* index2);
1832 std::string msprintf(const char *format, ...) MATTRPRINTF(1,2);
1833
1834 std::string cm_expand_env(const char* str);
1835
1836 /*---- buffer manager ----*/
1837 INT EXPRT bm_open_buffer(const char *buffer_name, INT buffer_size, INT * buffer_handle);
1838 INT EXPRT bm_get_buffer_handle(const char *buffer_name, INT * buffer_handle);
1839 INT EXPRT bm_close_buffer(INT buffer_handle);
1841 INT EXPRT bm_init_buffer_counters(INT buffer_handle);
1842 INT EXPRT bm_get_buffer_info(INT buffer_handle, BUFFER_HEADER * buffer_header);
1843 INT EXPRT bm_get_buffer_level(INT buffer_handle, INT * n_bytes);
1844 INT EXPRT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size);
1847 INT EXPRT bm_match_event(short int event_id, short int trigger_mask, const EVENT_HEADER *pevent);
1848 INT EXPRT bm_request_event(INT buffer_handle,
1849 short int event_id,
1850 short int trigger_mask,
1851 INT sampling_type,
1852 INT * request_id,
1853 EVENT_HANDLER *func
1854 );
1855 INT EXPRT bm_add_event_request(INT buffer_handle,
1856 short int event_id,
1857 short int trigger_mask,
1858 INT sampling_type,
1859 EVENT_HANDLER *func,
1860 INT request_id);
1861 INT EXPRT bm_remove_event_request(INT buffer_handle, INT request_id);
1862 INT EXPRT bm_delete_request(INT request_id);
1863 INT EXPRT bm_send_event(INT buffer_handle, const EVENT_HEADER* event, int unused, int timeout_msec);
1864#define HAVE_BM_SEND_EVENT_VEC 1
1865 INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector<char>& event, int timeout_msec);
1866 INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector<std::vector<char>>& event, int timeout_msec);
1867 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);
1868 INT EXPRT bm_receive_event(INT buffer_handle, void *destination, INT * buf_size, int timeout_msec);
1869#define HAVE_BM_RECEIVE_EVENT_VEC 1
1870 INT EXPRT bm_receive_event_vec(INT buffer_handle, std::vector<char> *event, int timeout_msec);
1871#define HAVE_BM_RECEIVE_EVENT_ALLOC 1
1873 INT EXPRT bm_skip_event(INT buffer_handle);
1874 INT EXPRT bm_flush_cache(INT buffer_handle, int timeout_msec);
1875 INT EXPRT bm_poll_event(void);
1879
1883 /*---- online database functions -----*/
1884 INT EXPRT db_open_database(const char *database_name, INT database_size, HNDLE * hdb, const char *client_name);
1888
1889 INT EXPRT db_create_key(HNDLE hdb, HNDLE key_handle, const char *key_name, DWORD type);
1891 INT EXPRT db_set_value(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, const void *data, INT size, INT num_values, DWORD type);
1892 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);
1893 INT EXPRT db_get_value(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, void *data, INT * size, DWORD type, BOOL create);
1894 INT EXPRT db_resize_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, int num_values, int max_string_size);
1895#define HAVE_DB_GET_VALUE_STRING_CREATE_STRING_LENGTH 1
1896 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);
1897 INT EXPRT db_set_value_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string* s);
1899 INT EXPRT db_find_link(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE * subhKey);
1901 INT EXPRT db_find_link1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE * subhKey);
1902 INT EXPRT db_find_keys(HNDLE hDB, HNDLE hKey, char *odbpath, std::vector<HNDLE> &hKeyVector);
1904 INT EXPRT db_scan_tree(HNDLE hDB, HNDLE hKey, int level, INT(*callback) (HNDLE, HNDLE, KEY *, INT, void *), void *info);
1905 INT EXPRT db_scan_tree_link(HNDLE hDB, HNDLE hKey, int level, void (*callback) (HNDLE, HNDLE, KEY *, INT, void *), void *info);
1906 [[deprecated("Please use the std::string version of this function")]]
1907 INT EXPRT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size);
1908 std::string EXPRT db_get_path(HNDLE hDB, HNDLE hKey);
1915 INT EXPRT db_get_key_info(HNDLE hDB, HNDLE hKey, char *name, INT name_size, INT * type, INT * num_values, INT * item_size);
1917 INT EXPRT db_rename_key(HNDLE hDB, HNDLE hKey, const char *name);
1919 INT EXPRT db_get_data(HNDLE hdb, HNDLE key_handle, void *data, INT * buf_size, DWORD type);
1921 INT EXPRT db_get_data1(HNDLE hDB, HNDLE hKey, void *data, INT * buf_size, DWORD type, INT * num_values);
1923 INT EXPRT db_set_data(HNDLE hdb, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1924 INT EXPRT db_set_data1(HNDLE hdb, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1926 INT EXPRT db_set_link_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1931 INT EXPRT db_merge_data(HNDLE hDB, HNDLE hKeyRoot, const char *name, void *data, INT data_size, INT num_values, INT type);
1933 INT EXPRT db_create_record(HNDLE hdb, HNDLE hkey, const char *name, const char *init_str);
1934 INT EXPRT db_check_record(HNDLE hDB, HNDLE hKey, const char *key_name, const char *rec_str, BOOL correct);
1935 INT EXPRT db_open_record(HNDLE hdb, HNDLE hkey, void *ptr, INT rec_size, WORD access, void (*dispatcher) (INT, INT, void *), void *info);
1936 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);
1938 INT EXPRT db_get_record(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align);
1939 INT EXPRT db_get_record1(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align, const char *rec_str);
1940 INT EXPRT db_get_record2(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align, const char *rec_str, BOOL correct);
1941 INT EXPRT db_get_record_size(HNDLE hdb, HNDLE hKey, INT align, INT * buf_size);
1942 INT EXPRT db_set_record(HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align);
1943 INT EXPRT db_set_record2(HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align, const char *rec_str);
1946
1949
1950 INT EXPRT db_watch(HNDLE hDB, HNDLE hKey, void (*dispatcher) (INT, INT, INT, void *info), void *info);
1952 INT EXPRT db_unwatch_all(void);
1953
1954 INT EXPRT db_load(HNDLE hdb, HNDLE key_handle, const char *filename, BOOL bRemote);
1955 INT EXPRT db_save(HNDLE hdb, HNDLE key_handle, const char *filename, BOOL bRemote);
1956 INT EXPRT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT * buffer_size, const char *path);
1957 INT EXPRT db_paste(HNDLE hDB, HNDLE hKeyRoot, const char *buffer);
1958 INT EXPRT db_paste_xml(HNDLE hDB, HNDLE hKeyRoot, const char *buffer);
1959 INT EXPRT db_save_struct(HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append);
1960 INT EXPRT db_save_string(HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append);
1962 INT EXPRT db_copy_xml(HNDLE hDB, HNDLE hKey, char *buffer, int *buffer_size, bool header);
1963
1965 INT EXPRT db_load_json(HNDLE hdb, HNDLE key_handle, const char *filename);
1966 void EXPRT json_write(char **buffer, int* buffer_size, int* buffer_end, int level, const char* s, int quoted);
1967 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);
1968
1969 /* db_copy_json() is obsolete, use db_copy_json_save, _values and _ls instead */
1970 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);
1971
1972 /* json encoder using the "ODB save" encoding, for use with "ODB load" and db_paste_json() */
1973 INT EXPRT db_copy_json_save(HNDLE hDB, HNDLE hKey, char **buffer, int* buffer_size, int* buffer_end);
1974 /* json encoder using the "ls" format, for getting the contents of a single ODB subdirectory */
1975 INT EXPRT db_copy_json_ls(HNDLE hDB, HNDLE hKey, char **buffer, int* buffer_size, int* buffer_end);
1976 /* json encoder using the "get_values" format, for resolving links and normalized ODB path names (converted to lower-case) */
1978 /* json encoder for an ODB array */
1979 INT EXPRT db_copy_json_array(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end);
1980 /* json encoder for a single element of an ODB array */
1981 INT EXPRT db_copy_json_index(HNDLE hDB, HNDLE hKey, int index, char **buffer, int *buffer_size, int *buffer_end);
1982
1983 INT EXPRT db_paste_json(HNDLE hDB, HNDLE hKey, const char *buffer);
1984 INT EXPRT db_paste_json_node(HNDLE hDB, HNDLE hKey, int index, const MJsonNode* json_node);
1985
1986 MJsonNode* EXPRT db_sor(HNDLE hDB, const char* path); // show open records
1987 MJsonNode* EXPRT db_scl(HNDLE hDB); // show clients
1988
1989 [[deprecated("Please use the std::string version of this function")]]
1990 INT EXPRT db_sprintf(char *string, 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_sprintff(char *string, const char *format, const void *data, INT data_size, INT index, DWORD type);
1993 [[deprecated("Please use the std::string version of this function")]]
1994 INT EXPRT db_sprintfh(char *string, const void *data, INT data_size, INT index, DWORD type);
1995 std::string EXPRT db_sprintf(const void *data, INT data_size, INT index, DWORD type);
1996 std::string EXPRT db_sprintff(const char *format, const void *data, INT data_size, INT index, DWORD type);
1997 std::string EXPRT db_sprintfh(const void *data, INT data_size, INT index, DWORD type);
1998 INT EXPRT db_sscanf(const char *string, void *data, INT * data_size, INT index, DWORD type);
1999 INT db_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD * timeout, DWORD * last);
2002
2003 [[deprecated("Please use the std::string version of this function")]]
2004 char EXPRT *strcomb(const char **list);
2005 std::string EXPRT strcomb1(const char **list);
2006
2009 /*---- Bank routines ----*/
2010 void EXPRT bk_init(void *pbh);
2011 void EXPRT bk_init32(void *event);
2012 void EXPRT bk_init32a(void *event);
2013 BOOL EXPRT bk_is32(const void *event);
2014 BOOL EXPRT bk_is32a(const void *event);
2015 INT EXPRT bk_size(const void *pbh);
2016 void EXPRT bk_create(void *pbh, const char *name, WORD type, void **pdata);
2017 INT EXPRT bk_delete(void *event, const char *name);
2018 INT EXPRT bk_close(void *pbh, void *pdata);
2019 INT EXPRT bk_list(const void *pbh, char *bklist);
2020 INT EXPRT bk_locate(const void *pbh, const char *name, void *pdata);
2021 INT EXPRT bk_iterate(const void *pbh, BANK ** pbk, void *pdata);
2022 INT EXPRT bk_iterate32(const void *pbh, BANK32 ** pbk, void *pdata);
2023 INT EXPRT bk_iterate32a(const void *pbh, BANK32A ** pbk, void *pdata);
2024 INT EXPRT bk_copy(char * pevent, char * psrce, const char * bkname);
2025 INT EXPRT bk_swap(void *event, BOOL force);
2026 INT EXPRT bk_find(const BANK_HEADER * pbkh, const char *name, DWORD * bklen, DWORD * bktype, void **pdata);
2027
2028 /*---- RPC routines ----*/
2030 INT EXPRT rpc_add_allowed_host(const char* hostname);
2031 INT EXPRT rpc_check_allowed_host(const char* hostname);
2032
2038 INT EXPRT rpc_set_name(const char *name);
2039 std::string rpc_get_name();
2040 bool EXPRT rpc_is_remote(void);
2041 bool EXPRT rpc_is_connected(void);
2042 std::string rpc_get_mserver_hostname();
2043 bool EXPRT rpc_is_mserver(void);
2044 INT EXPRT rpc_set_debug(void (*func) (const char *), INT mode);
2045 void EXPRT rpc_debug_printf(const char *format, ...);
2046
2047 INT EXPRT rpc_register_server(int port, int *plsock, int *pport);
2051 INT EXPRT rpc_client_call(HNDLE hConn, DWORD routine_id, ...);
2052 INT EXPRT rpc_call(DWORD routine_id, ...);
2054 const char EXPRT *rpc_tid_name(INT id);
2055 const char EXPRT *rpc_tid_name_old(INT id);
2056 INT EXPRT rpc_name_tid(const char* name); // inverse of rpc_tid_name()
2057 INT EXPRT rpc_server_connect(const char *host_name, const char *exp_name);
2058 INT EXPRT rpc_client_connect(const char *host_name, INT midas_port, const char *client_name, HNDLE * hConnection);
2060
2061 INT EXPRT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode);
2063
2064 INT EXPRT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event);
2065 INT EXPRT rpc_send_event_sg(INT buffer_handle, int sg_n, const char* const sg_ptr[], const size_t sg_len[]);
2066
2068
2069 void EXPRT rpc_get_convert_flags(INT * convert_flags);
2070 void EXPRT rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags);
2071 void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags);
2072
2076 /*---- system services ----*/
2077 DWORD EXPRT ss_millitime(void);
2078 DWORD EXPRT ss_time(void);
2079 double EXPRT ss_time_sec(void);
2081 void EXPRT ss_tzset();
2082 time_t EXPRT ss_mktime(struct tm* tms);
2083 std::string EXPRT ss_asctime(void);
2085 BOOL EXPRT ss_kbhit(void);
2086 std::string EXPRT ss_getcwd();
2087
2088 double EXPRT ss_nan(void);
2089 int EXPRT ss_isnan(double x);
2090 int EXPRT ss_isfin(double x);
2091
2092 void EXPRT ss_clear_screen(void);
2093 void EXPRT ss_printf(INT x, INT y, const char *format, ...);
2094 void ss_set_screen_size(int x, int y);
2095
2096 char EXPRT *ss_getpass(const char *prompt);
2097 INT EXPRT ss_getchar(BOOL reset);
2098 char EXPRT *ss_crypt(const char *key, const char *salt);
2099 char EXPRT *ss_gets(char *string, int size);
2100
2101 void EXPRT *ss_ctrlc_handler(void (*func) (int));
2102
2103 INT EXPRT ss_write_tcp(int sock, const char *buffer, size_t buffer_size);
2104
2105 /*---- direct io routines ----*/
2108
2109 /*---- tape routines ----*/
2110 INT EXPRT ss_tape_open(char *path, INT oflag, INT * channel);
2112 INT EXPRT ss_tape_status(char *path);
2123
2124 /*---- disk routines ----*/
2125 double EXPRT ss_disk_free(const char *path);
2126 double EXPRT ss_file_size(const char *path);
2127 time_t EXPRT ss_file_time(const char *path);
2128 INT EXPRT ss_dir_exist(const char *path);
2129 INT EXPRT ss_file_exist(const char *path);
2130 INT EXPRT ss_file_link_exist(const char *path);
2131 INT EXPRT ss_file_remove(const char *path);
2132 INT EXPRT ss_file_find(const char *path, const char *pattern, char **plist);
2133 INT EXPRT ss_dir_find(const char *path, const char *pattern, char **plist);
2134 INT EXPRT ss_dirlink_find(const char *path, const char *pattern, char **plist);
2135 INT EXPRT ss_file_find(const char *path, const char *pattern, STRING_LIST*);
2136 INT EXPRT ss_dir_find(const char *path, const char *pattern, STRING_LIST*);
2137 INT EXPRT ss_dirlink_find(const char *path, const char *pattern, STRING_LIST*);
2138 double EXPRT ss_disk_size(const char *path);
2139 int EXPRT ss_file_copy(const char *src, const char *dst, bool append = false);
2140
2141 /*---- UTF8 unicode ----*/
2142 bool ss_is_valid_utf8(const char* s);
2143 bool ss_repair_utf8(char* s);
2144 bool ss_repair_utf8(std::string& s);
2145
2148 /*---- ELog functions ----*/
2149 INT EXPRT el_retrieve(char *tag, char *date, int *run, char *author,
2150 char *type, char *system, char *subject,
2151 char *text, int *textsize, char *orig_tag,
2152 char *reply_tag, char *attachment1,
2153 char *attachment2, char *attachment3, char *encoding);
2154 INT EXPRT el_submit(int run, const char *author, const char *type, const char *system,
2155 const char *subject, const char *text, const char *reply_to,
2156 const char *encoding,
2157 const char *afilename1, const char *buffer1, INT buffer_size1,
2158 const char *afilename2, const char *buffer2, INT buffer_size2,
2159 const char *afilename3, const char *buffer3, INT buffer_size3,
2160 char *tag, INT tag_size);
2161 INT EXPRT el_search_message(char *tag, int *fh, BOOL walk, char* filename, int filename_size);
2162 INT EXPRT el_search_run(int run, char *return_tag);
2163 INT EXPRT el_delete_message(const char *tag);
2164
2165 /*---- alarm functions ----*/
2166 INT EXPRT al_check(void);
2167 INT EXPRT al_trigger_alarm(const char *alarm_name, const char *alarm_message,
2168 const char *default_class, const char *cond_str, INT type);
2169 INT EXPRT al_trigger_class(const char *alarm_class, const char *alarm_message, BOOL first);
2170 INT EXPRT al_reset_alarm(const char *alarm_name);
2171 BOOL EXPRT al_evaluate_condition(const char* alarm_name, const char *condition, std::string *pvalue);
2172 INT al_get_alarms(std::string *presult);
2173 INT EXPRT al_define_odb_alarm(const char *name, const char *condition, const char *aclass, const char *message);
2174
2175 /*---- analyzer functions ----*/
2176 void EXPRT test_register(ANA_TEST * t);
2177 void EXPRT add_data_dir(char *result, char *file);
2178 void EXPRT lock_histo(INT id);
2179
2180 void EXPRT open_subfolder(const char *name);
2182
2183 /*---- image history functions ----*/
2184 int hs_image_retrieve(std::string image_name, time_t start, time_t stop,
2185 std::vector<time_t> &vtime, std::vector<std::string> &vfilename);
2186
2187#endif /* _MIDAS_H */
2188
/* end of msectionh */
2191/* emacs
2192 * Local Variables:
2193 * tab-width: 8
2194 * c-basic-offset: 3
2195 * indent-tabs-mode: nil
2196 * End:
2197 */
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:16482
INT EXPRT bk_close(void *pbh, void *pdata)
Definition midas.cxx:16780
INT EXPRT bk_iterate32a(const void *pbh, BANK32A **pbk, void *pdata)
Definition midas.cxx:17103
INT EXPRT bk_swap(void *event, BOOL force)
Definition midas.cxx:17157
BOOL EXPRT bk_is32a(const void *event)
Definition midas.cxx:16437
INT EXPRT bk_delete(void *event, const char *name)
Definition midas.cxx:16674
BOOL EXPRT bk_is32(const void *event)
Definition midas.cxx:16415
INT EXPRT bk_iterate32(const void *pbh, BANK32 **pbk, void *pdata)
Definition midas.cxx:17067
INT EXPRT bk_locate(const void *pbh, const char *name, void *pdata)
Definition midas.cxx:16889
void EXPRT bk_init(void *pbh)
Definition midas.cxx:16406
INT EXPRT bk_list(const void *pbh, char *bklist)
Definition midas.cxx:16840
INT EXPRT bk_copy(char *pevent, char *psrce, const char *bkname)
Definition midas.cxx:16604
INT EXPRT bk_iterate(const void *pbh, BANK **pbk, void *pdata)
Definition midas.cxx:17046
void EXPRT bk_init32(void *event)
Definition midas.cxx:16469
void EXPRT bk_create(void *pbh, const char *name, WORD type, void **pdata)
Definition midas.cxx:16561
INT EXPRT bk_find(const BANK_HEADER *pbkh, const char *name, DWORD *bklen, DWORD *bktype, void **pdata)
Definition midas.cxx:16952
INT EXPRT bk_size(const void *pbh)
Definition midas.cxx:16495
INT EXPRT bm_open_buffer(const char *buffer_name, INT buffer_size, INT *buffer_handle)
Definition midas.cxx:6717
INT EXPRT bm_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, int timeout_msec)
Definition midas.cxx:9678
INT EXPRT bm_write_statistics_to_odb(void)
Definition midas.cxx:7280
INT EXPRT bm_delete_request(INT request_id)
Definition midas.cxx:8584
INT EXPRT bm_close_all_buffers(void)
Definition midas.cxx:7243
INT EXPRT bm_poll_event(void)
Definition midas.cxx:11126
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:8314
INT EXPRT bm_receive_event_vec(INT buffer_handle, std::vector< char > *event, int timeout_msec)
Definition midas.cxx:10809
INT EXPRT bm_skip_event(INT buffer_handle)
Definition midas.cxx:10874
INT EXPRT bm_empty_buffers(void)
Definition midas.cxx:11240
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:8465
INT EXPRT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size)
Definition midas.cxx:8140
INT EXPRT bm_receive_event(INT buffer_handle, void *destination, INT *buf_size, int timeout_msec)
Definition midas.cxx:10650
INT EXPRT bm_check_buffers(void)
Definition midas.cxx:10954
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:8292
INT EXPRT bm_remove_event_request(INT buffer_handle, INT request_id)
Definition midas.cxx:8518
INT EXPRT bm_close_buffer(INT buffer_handle)
Definition midas.cxx:7096
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:9778
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:8281
INT EXPRT bm_match_event(short int event_id, short int trigger_mask, const EVENT_HEADER *pevent)
Definition midas.cxx:6015
INT EXPRT bm_flush_cache(INT buffer_handle, int timeout_msec)
Definition midas.cxx:10207
INT EXPRT bm_get_buffer_handle(const char *buffer_name, INT *buffer_handle)
Definition midas.cxx:7075
INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector< char > &event, int timeout_msec)
Definition midas.cxx:9705
INT EXPRT bm_receive_event_alloc(INT buffer_handle, EVENT_HEADER **ppevent, int timeout_msec)
Definition midas.cxx:10731
INT EXPRT cm_register_transition(INT transition, INT(*func)(INT, char *), int sequence_number)
Definition midas.cxx:3593
INT EXPRT cm_shutdown(const char *name, BOOL bUnique)
Definition midas.cxx:7400
INT EXPRT cm_disconnect_client(HNDLE hConn, BOOL bShutdown)
Definition midas.cxx:2833
INT EXPRT cm_yield(INT millisec)
Definition midas.cxx:5642
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:3317
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:7355
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:3783
INT EXPRT cm_transition(INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag)
Definition midas.cxx:5286
INT EXPRT cm_stop_watchdog_thread(void)
Definition midas.cxx:7370
std::string EXPRT cm_asctime()
Definition midas.cxx:1412
INT EXPRT cm_register_function(INT id, INT(*func)(INT, void **))
Definition midas.cxx:5790
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:5579
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:3452
void EXPRT cm_ack_ctrlc_pressed(void)
Definition midas.cxx:5456
INT EXPRT cm_execute(const char *command, char *result, INT buf_size)
Definition midas.cxx:5723
INT EXPRT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
Definition midas.cxx:3336
INT EXPRT cm_cleanup(const char *client_name, BOOL ignore_timeout)
Definition midas.cxx:7610
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:7710
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:5461
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:3837
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:3669
INT EXPRT cm_check_deferred_transition(void)
Definition midas.cxx:3889
std::string cm_get_experiment_name()
Definition midas.cxx:1580
INT EXPRT cm_set_transition_sequence(INT transition, INT sequence_number)
Definition midas.cxx:3723
const char *EXPRT cm_get_revision(void)
Definition midas.cxx:1484
INT EXPRT cm_watchdog_thread(void *unused)
Definition midas.cxx:7329
INT EXPRT cm_set_experiment_database(HNDLE hDB, HNDLE hKeyClient)
Definition midas.cxx:2939
BOOL EXPRT cm_is_ctrlc_pressed(void)
Definition midas.cxx:5452
INT EXPRT cm_time(DWORD *t)
Definition midas.cxx:1434
INT EXPRT cm_transition_cleanup()
Definition midas.cxx:5267
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:7520
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:8068
INT ss_dir_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6796
int ss_isnan(double x)
Definition system.cxx:7961
BOOL ss_kbhit()
Definition system.cxx:3664
double ss_disk_size(const char *path)
Definition system.cxx:7048
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:7118
INT ss_tape_rskip(INT channel, INT count)
Definition system.cxx:6292
INT ss_tape_write(INT channel, void *pdata, INT count)
Definition system.cxx:6032
int ss_isfin(double x)
Definition system.cxx:7966
INT ss_dirlink_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6872
INT ss_getchar(BOOL reset)
Definition system.cxx:7503
INT ss_tape_rewind(INT channel)
Definition system.cxx:6348
INT ss_tape_fskip(INT channel, INT count)
Definition system.cxx:6232
INT ss_tape_close(INT channel)
Definition system.cxx:5902
double ss_disk_free(const char *path)
Definition system.cxx:6620
time_t ss_file_time(const char *path)
Definition system.cxx:7010
int ss_file_link_exist(const char *path)
Definition system.cxx:7154
std::string ss_getcwd()
Definition system.cxx:5770
INT ss_tape_get_blockn(INT channel)
Definition system.cxx:6568
double ss_file_size(const char *path)
Definition system.cxx:6972
INT ss_tape_status(char *path)
Definition system.cxx:5946
DWORD ss_settime(DWORD seconds)
Definition system.cxx:3475
INT ss_tape_mount(INT channel)
Definition system.cxx:6456
char * ss_getpass(const char *prompt)
Definition system.cxx:7440
INT ss_directio_give_port(INT start, INT end)
Definition system.cxx:7811
void ss_tzset()
Definition system.cxx:3355
INT ss_write_tcp(int sock, const char *buffer, size_t buffer_size)
Definition system.cxx:5346
int ss_dir_exist(const char *path)
Definition system.cxx:7186
void ss_set_screen_size(int x, int y)
Definition system.cxx:7349
INT ss_tape_spool(INT channel)
Definition system.cxx:6400
INT ss_file_remove(const char *path)
Definition system.cxx:6952
INT ss_tape_read(INT channel, void *pdata, INT *count)
Definition system.cxx:6092
int ss_file_copy(const char *src, const char *dst, bool append)
Definition system.cxx:7219
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:6512
double ss_nan()
Definition system.cxx:7940
INT ss_tape_write_eof(INT channel)
Definition system.cxx:6166
bool ss_repair_utf8(char *string)
Definition system.cxx:8151
void ss_clear_screen()
Definition system.cxx:7299
char * ss_crypt(const char *buf, const char *salt)
Definition system.cxx:7891
INT ss_tape_open(char *path, INT oflag, INT *channel)
Definition system.cxx:5811
void ss_printf(INT x, INT y, const char *format,...)
Definition system.cxx:7382
INT ss_directio_lock_port(INT start, INT end)
Definition system.cxx:7847
char * ss_gets(char *string, int size)
Definition system.cxx:7770
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:6713
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:12498
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:13777
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:13291
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:11805
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:12972
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:14111
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:13887
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:13934
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:14161
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:12623
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:13441
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:12291
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:14025
INT db_close_record(HNDLE hDB, HNDLE hKey)
Definition odb.cxx:13473
INT db_create_record(HNDLE hDB, HNDLE hKey, const char *orig_key_name, const char *init_str)
Definition odb.cxx:12800
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:13917
INT db_add_open_record(HNDLE hDB, HNDLE hKey, WORD access_mode)
Definition odb.cxx:12363
INT EXPRT db_set_value_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string *s)
Definition odb.cxx:14005
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:12169
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:15235
void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags)
Definition midas.cxx:11706
INT EXPRT rpc_client_connect(const char *host_name, INT midas_port, const char *client_name, HNDLE *hConnection)
Definition midas.cxx:12012
INT EXPRT rpc_register_server(int port, int *plsock, int *pport)
Definition midas.cxx:14538
INT EXPRT rpc_client_disconnect(HNDLE hConn, BOOL bShutdown)
Definition midas.cxx:12676
INT EXPRT rpc_client_call(HNDLE hConn, DWORD routine_id,...)
Definition midas.cxx:13472
INT EXPRT rpc_register_functions(const RPC_LIST *new_list, RPC_HANDLER func)
Definition midas.cxx:11827
INT EXPRT rpc_set_timeout(HNDLE hConn, int timeout_msec, int *old_timeout_msec=NULL)
Definition midas.cxx:12998
INT EXPRT rpc_server_connect(const char *host_name, const char *exp_name)
Definition midas.cxx:12381
std::string rpc_get_name()
Definition midas.cxx:13084
bool EXPRT rpc_is_remote(void)
Definition midas.cxx:12761
void EXPRT rpc_debug_printf(const char *format,...)
Definition midas.cxx:13161
const char EXPRT * rpc_tid_name_old(INT id)
Definition midas.cxx:11771
INT EXPRT cm_query_transition(int *transition, int *run_number, int *trans_time)
Definition midas.cxx:14120
INT EXPRT rpc_server_loop(void)
Definition midas.cxx:15843
INT EXPRT rpc_clear_allowed_hosts(void)
Definition midas.cxx:15210
INT EXPRT rpc_test_rpc()
Definition midas.cxx:15046
std::string rpc_get_mserver_hostname()
Definition midas.cxx:12805
INT EXPRT rpc_get_hw_type()
Definition midas.cxx:12834
bool EXPRT rpc_is_connected(void)
Definition midas.cxx:12783
INT EXPRT rpc_call(DWORD routine_id,...)
Definition midas.cxx:13663
const char EXPRT * rpc_tid_name(INT id)
Definition midas.cxx:11764
INT EXPRT rpc_flush_event(void)
Definition midas.cxx:14038
INT EXPRT rpc_register_client(const char *name, RPC_LIST *list)
Definition midas.cxx:11808
INT EXPRT rpc_server_shutdown(void)
Definition midas.cxx:16183
INT EXPRT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode)
Definition midas.cxx:13901
INT EXPRT rpc_get_timeout(HNDLE hConn)
Definition midas.cxx:12973
INT EXPRT rpc_set_debug(void(*func)(const char *), INT mode)
Definition midas.cxx:13134
INT EXPRT rpc_name_tid(const char *name)
Definition midas.cxx:11778
bool EXPRT rpc_is_mserver(void)
Definition midas.cxx:12818
INT EXPRT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event)
Definition midas.cxx:13919
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:13925
INT EXPRT rpc_set_name(const char *name)
Definition midas.cxx:13108
INT rpc_get_convert_flags(void)
Definition midas.cxx:13030
INT EXPRT rpc_tid_size(INT id)
Definition midas.cxx:11757
INT EXPRT rpc_check_allowed_host(const char *hostname)
Definition midas.cxx:15264
void EXPRT rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags)
Definition midas.cxx:11681
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:1724
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:7838
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:7791
char INT8
Definition midas.h:137
INT EXPRT bm_init_buffer_counters(INT buffer_handle)
Definition midas.cxx:8063
int INT
Definition midas.h:129
#define MAX_RPC_PARAMS
Definition midas.h:1595
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:1736
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:1151
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:1722
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:17723
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:1465
DWORD system_message_last
Definition midas.h:1468
BOOL stop_run
Definition midas.h:1472
INT execute_interval
Definition midas.h:1470
DWORD execute_last
Definition midas.h:1471
BOOL alarm_sound
Definition midas.h:1475
INT system_message_interval
Definition midas.h:1467
BOOL write_elog_message
Definition midas.h:1466
INT type
Definition midas.h:1499
DWORD trigger_count
Definition midas.h:1502
INT check_interval
Definition midas.h:1500
DWORD trigger_count_required
Definition midas.h:1503
DWORD checked_last
Definition midas.h:1501
INT triggered
Definition midas.h:1498
BOOL active
Definition midas.h:1497
const char ** init_str
Definition midas.h:1266
BOOL enabled
Definition midas.h:1267
INT param_size
Definition midas.h:1265
void * histo_folder
Definition midas.h:1268
void * parameters
Definition midas.h:1264
BOOL clear_histos
Definition midas.h:1319
BOOL histo_dump
Definition midas.h:1317
BOOL events_to_odb
Definition midas.h:1321
DWORD previous_count
Definition midas.h:1342
DWORD count
Definition midas.h:1341
BOOL registered
Definition midas.h:1340
BOOL value
Definition midas.h:1343
AR_STATS ar_stats
Definition midas.h:1309
HNDLE request_id
Definition midas.h:1298
BANK_LIST * bank_list
Definition midas.h:1292
HNDLE hkey_variables
Definition midas.h:1299
char ** init_string
Definition midas.h:1295
HNDLE hkey_common
Definition midas.h:1300
ANA_MODULE ** ana_module
Definition midas.h:1291
void * addr
Definition midas.h:1301
INT rwnt_buffer_size
Definition midas.h:1293
AR_INFO ar_info
Definition midas.h:1289
DWORD events_received
Definition midas.h:1307
DWORD events_written
Definition midas.h:1308
HNDLE buffer_handle
Definition midas.h:1297
BOOL enabled
Definition midas.h:1276
INT sampling_type
Definition midas.h:1274
INT trigger_mask
Definition midas.h:1273
INT event_id
Definition midas.h:1272
double events_written
Definition midas.h:1284
double events_per_sec
Definition midas.h:1283
double events_received
Definition midas.h:1282
DWORD type
Definition midas.h:1229
DWORD data_size
Definition midas.h:1230
DWORD reserved
Definition midas.h:1231
DWORD data_size
Definition midas.h:1224
DWORD type
Definition midas.h:1223
DWORD flags
Definition midas.h:1212
DWORD data_size
Definition midas.h:1211
void * addr
Definition midas.h:1246
DWORD size
Definition midas.h:1243
HNDLE def_key
Definition midas.h:1248
char ** init_str
Definition midas.h:1244
WORD type
Definition midas.h:1242
DWORD n_data
Definition midas.h:1247
BOOL output_flag
Definition midas.h:1245
Definition midas.h:1215
WORD type
Definition midas.h:1217
WORD data_size
Definition midas.h:1218
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:1371
DWORD event_id
Definition midas.h:1369
std::string * pequipment_name
Definition midas.h:1168
EQUIPMENT_INFO * pequipment
Definition midas.h:1167
void * dd_info
Definition midas.h:1163
DD_MT_BUFFER * mt_buffer
Definition midas.h:1164
INT stop_thread
Definition midas.h:1165
MUTEX_T * mutex
Definition midas.h:1166
BOOL enabled
Definition midas.h:1162
BOOL priority_read
Definition midas.h:1169
DWORD flags
Definition midas.h:1161
INT write_cache_size
Definition midas.h:1107
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:1139
double events_sent
Definition midas.h:1138
double kbytes_per_sec
Definition midas.h:1140
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:1364
DWORD record_type
Definition midas.h:1361
DWORD time
Definition midas.h:1363
DWORD data_size
Definition midas.h:1365
DWORD event_id
Definition midas.h:1362
DWORD time
Definition midas.h:1376
DWORD offset
Definition midas.h:1377
DWORD event_id
Definition midas.h:1375
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:1432
BOOL required
Definition midas.h:1431
BOOL auto_restart
Definition midas.h:1437
DWORD check_interval
Definition midas.h:1433
BOOL auto_stop
Definition midas.h:1436
BOOL auto_start
Definition midas.h:1435
DWORD first_failed
Definition midas.h:1439
INT id
Definition midas.h:1598
RPC_HANDLER * dispatch
Definition midas.h:1601
const char * name
Definition midas.h:1599
WORD flags
Definition midas.h:1591
WORD tid
Definition midas.h:1590
INT n
Definition midas.h:1592
INT transition_in_progress
Definition midas.h:1401
INT requested_transition
Definition midas.h:1403
DWORD start_time_binary
Definition midas.h:1405
INT state
Definition midas.h:1398
DWORD stop_time_binary
Definition midas.h:1407
INT online_mode
Definition midas.h:1399
INT start_abort
Definition midas.h:1402
INT run_number
Definition midas.h:1400
Definition midas.h:1234
DWORD type
Definition midas.h:1236
DWORD n_data
Definition midas.h:1237
DWORD subevent_number
Definition midas.h:1188
DWORD serial_number
Definition midas.h:1187
DWORD odb_out
Definition midas.h:1189
DWORD bytes_sent
Definition midas.h:1191
DWORD events_sent
Definition midas.h:1192
EQUIPMENT_STATS stats
Definition midas.h:1194
void * event_descrip
Definition midas.h:1178
EQUIPMENT_INFO info
Definition midas.h:1174
DWORD last_called
Definition midas.h:1181
HNDLE buffer_handle
Definition midas.h:1185
char name[NAME_LENGTH]
Definition midas.h:1173
DWORD last_idle
Definition midas.h:1182
DWORD events_collected
Definition midas.h:1193
DWORD odb_in
Definition midas.h:1190
HNDLE hkey_variables
Definition midas.h:1186
void * cd_info
Definition midas.h:1179
INT format
Definition midas.h:1184
INT(* cd)(INT cmd, PEQUIPMENT)
Definition midas.h:1176
INT(* readout)(char *, INT)
Definition midas.h:1175
DWORD poll_count
Definition midas.h:1183
DEVICE_DRIVER * driver
Definition midas.h:1177
INT status
Definition midas.h:1180
DWORD n_tag
Definition midas.h:1383
std::string def_fn
Definition midas.h:1387
DWORD base_time
Definition midas.h:1391
std::string index_fn
Definition midas.h:1386
std::string hist_fn
Definition midas.h:1385
std::string event_name
Definition midas.h:1382
DWORD def_offset
Definition midas.h:1392
DWORD event_id
Definition midas.h:1381
char c
Definition system.cxx:1310
static te_expr * list(state *s)
Definition tinyexpr.c:567