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
625#define BM_TIMEOUT 221
/* end of group 22 */
628
632#define DB_SUCCESS 1
633#define DB_CREATED 302
634#define DB_NO_MEMORY 303
635#define DB_INVALID_NAME 304
636#define DB_INVALID_HANDLE 305
637#define DB_NO_SLOT 306
638#define DB_NO_SEMAPHORE 307
639#define DB_MEMSIZE_MISMATCH 308
640#define DB_INVALID_PARAM 309
641#define DB_FULL 310
642#define DB_KEY_EXIST 311
643#define DB_NO_KEY 312
644#define DB_KEY_CREATED 313
645#define DB_TRUNCATED 314
646#define DB_TYPE_MISMATCH 315
647#define DB_NO_MORE_SUBKEYS 316
648#define DB_FILE_ERROR 317
649#define DB_NO_ACCESS 318
650#define DB_STRUCT_SIZE_MISMATCH 319
651#define DB_OPEN_RECORD 320
652#define DB_OUT_OF_RANGE 321
653#define DB_INVALID_LINK 322
654#define DB_CORRUPTED 323
655#define DB_STRUCT_MISMATCH 324
656#define DB_TIMEOUT 325
657#define DB_VERSION_MISMATCH 326
/* end of group 23 */
660
664#define SS_SUCCESS 1
665#define SS_CREATED 402
666#define SS_NO_MEMORY 403
667#define SS_INVALID_NAME 404
668#define SS_INVALID_HANDLE 405
669#define SS_INVALID_ADDRESS 406
670#define SS_FILE_ERROR 407
671#define SS_NO_SEMAPHORE 408
672#define SS_NO_PROCESS 409
673#define SS_NO_THREAD 410
674#define SS_SOCKET_ERROR 411
675#define SS_TIMEOUT 412
676#define SS_SERVER_RECV 413
677#define SS_CLIENT_RECV 414
678#define SS_ABORT 415
679#define SS_EXIT 416
680#define SS_NO_TAPE 417
681#define SS_DEV_BUSY 418
682#define SS_IO_ERROR 419
683#define SS_TAPE_ERROR 420
684#define SS_NO_DRIVER 421
685#define SS_END_OF_TAPE 422
686#define SS_END_OF_FILE 423
687#define SS_FILE_EXISTS 424
688#define SS_NO_SPACE 425
689#define SS_INVALID_FORMAT 426
690#define SS_NO_ROOT 427
691#define SS_SIZE_MISMATCH 428
692#define SS_NO_MUTEX 429
/* end of group 24 */
695
699#define RPC_SUCCESS 1
700#define RPC_ABORT SS_ABORT
701#define RPC_NO_CONNECTION 502
702#define RPC_NET_ERROR 503
703#define RPC_TIMEOUT 504
704#define RPC_EXCEED_BUFFER 505
705#define RPC_NOT_REGISTERED 506
706#define RPC_CONNCLOSED 507
707#define RPC_INVALID_ID 508
708#define RPC_SHUTDOWN 509
709#define RPC_NO_MEMORY 510
710#define RPC_DOUBLE_DEFINED 511
711#define RPC_MUTEX_TIMEOUT 512
/* end of group 25 */
714
718#define FE_SUCCESS 1
719#define FE_ERR_ODB 602
720#define FE_ERR_HW 603
721#define FE_ERR_DISABLED 604
722#define FE_ERR_DRIVER 605
723#define FE_PARTIALLY_DISABLED 606
724#define FE_NOT_YET_READ 607
728#define HS_SUCCESS 1
729#define HS_FILE_ERROR 702
730#define HS_NO_MEMORY 703
731#define HS_TRUNCATED 704
732#define HS_WRONG_INDEX 705
733#define HS_UNDEFINED_EVENT 706
734#define HS_UNDEFINED_VAR 707
738#define FTP_SUCCESS 1
739#define FTP_NET_ERROR 802
740#define FTP_FILE_ERROR 803
741#define FTP_RESPONSE_ERROR 804
742#define FTP_INVALID_ARG 805
746#define EL_SUCCESS 1
747#define EL_FILE_ERROR 902
748#define EL_NO_MESSAGE 903
749#define EL_TRUNCATED 904
750#define EL_FIRST_MSG 905
751#define EL_LAST_MSG 906
755#define AL_SUCCESS 1
756#define AL_INVALID_NAME 1002
757#define AL_ERROR_ODB 1003
758#define AL_RESET 1004
759#define AL_TRIGGERED 1005
763#define CMD_INIT 1 /* misc. commands must be below 20 !! */
764#define CMD_EXIT 2
765#define CMD_START 3
766#define CMD_STOP 4
767#define CMD_IDLE 5
768#define CMD_GET_THRESHOLD 6
769#define CMD_GET_THRESHOLD_CURRENT 7
770#define CMD_GET_THRESHOLD_ZERO 8
771#define CMD_SET_LABEL 9
772#define CMD_GET_LABEL 10
773#define CMD_OPEN 11
774#define CMD_CLOSE 12
775#define CMD_MISC_LAST 12 /* update this if you add new commands */
776
777#define CMD_SET_FIRST CMD_MISC_LAST+1 /* set commands */
778#define CMD_SET CMD_SET_FIRST // = 13
779#define CMD_SET_VOLTAGE_LIMIT CMD_SET_FIRST+1
780#define CMD_SET_CURRENT_LIMIT CMD_SET_FIRST+2
781#define CMD_SET_RAMPUP CMD_SET_FIRST+3
782#define CMD_SET_RAMPDOWN CMD_SET_FIRST+4
783#define CMD_SET_TRIP_TIME CMD_SET_FIRST+5
784#define CMD_SET_CHSTATE CMD_SET_FIRST+6
785#define CMD_SET_LAST CMD_SET_FIRST+6 /* update this if you add new commands */
786
787#define CMD_GET_FIRST CMD_SET_LAST+1 /* multithreaded get commands */
788#define CMD_GET CMD_GET_FIRST // = 20
789#define CMD_GET_CURRENT CMD_GET_FIRST+1
790#define CMD_GET_TRIP CMD_GET_FIRST+2
791#define CMD_GET_STATUS CMD_GET_FIRST+3
792#define CMD_GET_TEMPERATURE CMD_GET_FIRST+4
793#define CMD_GET_DEMAND CMD_GET_FIRST+5
794#define CMD_GET_LAST CMD_GET_FIRST+5 /* update this if you add new commands ! */
795
796#define CMD_GET_DIRECT CMD_GET_LAST+1 /* direct get commands */
797#define CMD_GET_VOLTAGE_LIMIT CMD_GET_DIRECT // = 25
798#define CMD_GET_CURRENT_LIMIT CMD_GET_DIRECT+2
799#define CMD_GET_RAMPUP CMD_GET_DIRECT+3
800#define CMD_GET_RAMPDOWN CMD_GET_DIRECT+4
801#define CMD_GET_TRIP_TIME CMD_GET_DIRECT+5
802#define CMD_GET_CHSTATE CMD_GET_DIRECT+6
803#define CMD_GET_CRATEMAP CMD_GET_DIRECT+7
804#define CMD_GET_DEMAND_DIRECT CMD_GET_DIRECT+8
805#define CMD_GET_DIRECT_LAST CMD_GET_DIRECT+8 /* update this if you add new commands ! */
806
807#define CMD_ENABLE_COMMAND (1<<14) /* these two commands can be used to enable/disable */
808#define CMD_DISABLE_COMMAND (1<<15) /* one of the other commands */
809
812#define CMD_WRITE 100
813#define CMD_READ 101
814#define CMD_PUTS 102
815#define CMD_GETS 103
816#define CMD_DEBUG 104
817#define CMD_NAME 105
818
821#define CMD_INTERRUPT_ENABLE 100
822#define CMD_INTERRUPT_DISABLE 101
823#define CMD_INTERRUPT_ATTACH 102
824#define CMD_INTERRUPT_DETACH 103
825
828#define BD_GETS(s,z,p,t) info->bd(CMD_GETS, info->bd_info, s, z, p, t)
829#define BD_READS(s,z,t) info->bd(CMD_READ, info->bd_info, s, z, t)
830#define BD_PUTS(s) info->bd(CMD_PUTS, info->bd_info, s)
831#define BD_WRITES(s) info->bd(CMD_WRITE, info->bd_info, s)
832
/* end of 26 */
835
/* end of mdeferrorh */
838
839
840#define ANA_CONTINUE 1
841#define ANA_SKIP 0
842
843
844/*---- Buffer manager structures -----------------------------------*/
845
859
867#define TRIGGER_MASK(e) ((((EVENT_HEADER *) e)-1)->trigger_mask)
868
874#define EVENT_ID(e) ((((EVENT_HEADER *) e)-1)->event_id)
875
881#define SERIAL_NUMBER(e) ((((EVENT_HEADER *) e)-1)->serial_number)
882
888#define TIME_STAMP(e) ((((EVENT_HEADER *) e)-1)->time_stamp)
889
895#define DATA_SIZE(e) ((((EVENT_HEADER *) e)-1)->data_size)
896
897#define EVENT_SOURCE(e,o) (* (INT*) (e+o))
898
901#define EVENTID_BOR ((short int) 0x8000)
902#define EVENTID_EOR ((short int) 0x8001)
903#define EVENTID_MESSAGE ((short int) 0x8002)
907#define EVENTID_FRAG1 ((short int) 0xC000) /* first fragment */
908#define EVENTID_FRAG ((short int) 0xD000) /* added to real event-id */
909
912#define MIDAS_MAGIC 0x494d
920
923typedef INT (RPC_HANDLER)(INT index, void *prpc_param[]);
924
934
957
971
972/* Per-process buffer access structure (descriptor) */
973
974/*
975 * BUFFER locking rules:
976 * locking order: read_cache_mutex -> write_cache_mutex -> buffer_mutex -> buffer semaphore
977 * lock read_cache_mutex to access read_cache_xxx, ok to check read_cache_size is not 0
978 * lock write_cache_mutex to access write_cache_xxx, ok to check write_cache_size is not 0
979 * lock buffer_mutex to access all other data in BUFFER
980 * lock buffer semaphore to access data in shared memory pointed to by buffer_header
981 * to avoid deadlocks:
982 * do not call ODB functions while holding any any of these locks.
983 * ok to call cm_msg()
984 */
985
1026
1040
1046
1049/*---- Equipment ---------------------------------------------------*/
1050
1051#define DF_INPUT (1<<0)
1052#define DF_OUTPUT (1<<1)
1053#define DF_PRIO_DEVICE (1<<2)
1054#define DF_READ_ONLY (1<<3)
1055#define DF_MULTITHREAD (1<<4) //*< access device with a dedicated thread */
1056#define DF_HW_RAMP (1<<5) //*< high voltage device can do hardware ramping */
1057#define DF_LABELS_FROM_DEVICE (1<<6) //*< pull HV channel names from device */
1058#define DF_REPORT_TEMP (1<<7) //*< report temperature from HV cards */
1059#define DF_REPORT_STATUS (1<<8) //*< report status word from HV channels */
1060#define DF_REPORT_CHSTATE (1<<9) //*< report channel state word from HV channels */
1061#define DF_REPORT_CRATEMAP (1<<10) //*< reports an integer encoding size and occupancy of HV crate */
1062#define DF_QUICKSTART (1<<11) //*< do not read channels initially during init to speed up startup */
1063#define DF_POLL_DEMAND (1<<12) //*< continously read demand value from device */
1064#define DF_PRIORITY_READ (1<<13) //*< read channel with priority after setting */
1065
1069typedef struct {
1071 INT(*bd) (INT cmd, ...);
1072 void *bd_info;
1073} BUS_DRIVER;
1074
1075typedef struct {
1077 char label[NAME_LENGTH];
1080
1088
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\
1131"
1132
1136typedef struct {
1141
1144#define EQUIPMENT_STATISTICS_STR "\
1145Events sent = DOUBLE : 0\n\
1146Events per sec. = DOUBLE : 0\n\
1147kBytes per sec. = DOUBLE : 0\n\
1148"
1149
1150typedef struct eqpmnt *PEQUIPMENT;
1151
1170
1195
1199
1200/*---- Banks -------------------------------------------------------*/
1201
1202#define BANK_FORMAT_VERSION 1
1203#define BANK_FORMAT_32BIT (1<<4)
1204#define BANK_FORMAT_64BIT_ALIGNED (1<<5)
1213
1214typedef struct {
1215 char name[4];
1218} BANK;
1219
1220typedef struct {
1221 char name[4];
1224} BANK32;
1225
1232
1233typedef struct {
1237} TAG;
1238
1249
1252/*---- Analyzer request --------------------------------------------*/
1253
1254typedef struct {
1256 char author[NAME_LENGTH];
1257 INT(*analyzer) (EVENT_HEADER *, void *);
1261 INT(*init) (void);
1262 INT(*exit) (void);
1265 const char **init_str;
1268} ANA_MODULE;
1269
1279
1280typedef struct {
1284} AR_STATS;
1285
1311
1312/* output file information, maps to /<analyzer>/Output */
1313typedef struct {
1314 char filename[256];
1317 char histo_dump_filename[256];
1319 char last_histo_filename[256];
1321 char global_memory_name[8];
1323
1324#define ANA_OUTPUT_INFO_STR "\
1325Filename = STRING : [256] run%05d.asc\n\
1326RWNT = BOOL : 0\n\
1327Histo Dump = BOOL : 0\n\
1328Histo Dump Filename = STRING : [256] his%05d.rz\n\
1329Clear histos = BOOL : 1\n\
1330Last Histo Filename = STRING : [256] last.rz\n\
1331Events to ODB = BOOL : 1\n\
1332Global Memory Name = STRING : [8] ONLN\n\
1333"
1334
1335/*---- Tests -------------------------------------------------------*/
1336
1344
1345#define SET_TEST(t, v) { if (!t.registered) test_register(&t); t.value = (v); }
1346#define TEST(t) (t.value)
1347
1348#ifdef DEFINE_TESTS
1349#define DEF_TEST(t) ANA_TEST t = { #t, 0, 0, FALSE };
1350#else
1351#define DEF_TEST(t) extern ANA_TEST t;
1352#endif
1353
1354/*---- History structures ------------------------------------------*/
1355
1356#define RT_DATA (*((DWORD *) "HSDA"))
1357#define RT_DEF (*((DWORD *) "HSDF"))
1358
1359typedef struct {
1360 DWORD record_type; /* RT_DATA or RT_DEF */
1363 DWORD def_offset; /* place of definition */
1364 DWORD data_size; /* data following this header in bytes */
1365} HIST_RECORD;
1366
1367typedef struct {
1369 char event_name[NAME_LENGTH];
1371} DEF_RECORD;
1372
1378
1379typedef struct history_struct {
1381 std::string event_name;
1384 std::string hist_fn;
1385 std::string index_fn;
1386 std::string def_fn;
1387 int hist_fh = 0;
1388 int index_fh = 0;
1389 int def_fh = 0;
1393
1394/*---- ODB runinfo -------------------------------------------------*/
1395
1408
1409#define RUNINFO_STR(_name) const char *_name[] = {\
1410"[.]",\
1411"State = INT : 1",\
1412"Online Mode = INT : 1",\
1413"Run number = INT : 0",\
1414"Transition in progress = INT : 0",\
1415"Start abort = INT : 0",\
1416"Requested transition = INT : 0",\
1417"Start time = STRING : [32] Tue Sep 09 15:04:42 1997",\
1418"Start time binary = DWORD : 0",\
1419"Stop time = STRING : [32] Tue Sep 09 15:04:42 1997",\
1420"Stop time binary = DWORD : 0",\
1421"",\
1422NULL }
1423
1424/*---- Alarm system ------------------------------------------------*/
1425
1426/********************************************************************/
1440
1441#define AT_INTERNAL 1
1442#define AT_PROGRAM 2
1443#define AT_EVALUATED 3
1444#define AT_PERIODIC 4
1445#define AT_LAST 4
1447#define PROGRAM_INFO_STR(_name) const char *_name[] = {\
1448"[.]",\
1449"Required = BOOL : n",\
1450"Watchdog timeout = INT : 10000",\
1451"Check interval = DWORD : 180000",\
1452"Start command = STRING : [256] ",\
1453"Auto start = BOOL : n",\
1454"Auto stop = BOOL : n",\
1455"Auto restart = BOOL : n",\
1456"Alarm class = STRING : [32] ",\
1457"First failed = DWORD : 0",\
1458"",\
1459NULL }
1460
1476
1477#define ALARM_CLASS_STR(_name) const char *_name[] = {\
1478"[.]",\
1479"Write system message = BOOL : y",\
1480"Write Elog message = BOOL : n",\
1481"System message interval = INT : 60",\
1482"System message last = DWORD : 0",\
1483"Execute command = STRING : [256] ",\
1484"Execute interval = INT : 0",\
1485"Execute last = DWORD : 0",\
1486"Stop run = BOOL : n",\
1487"Display BGColor = STRING : [32] red",\
1488"Display FGColor = STRING : [32] black",\
1489"Alarm sound = BOOL : y"\
1490"",\
1491NULL }
1492
1495typedef struct {
1503 char time_triggered_first[32];
1504 char time_triggered_last[32];
1505 char condition[256];
1506 char alarm_class[32];
1507 char alarm_message[80];
1508} ALARM;
1509
1510#define ALARM_ODB_STR(_name) const char *_name[] = {\
1511"[.]",\
1512"Active = BOOL : n",\
1513"Triggered = INT : 0",\
1514"Type = INT : 3",\
1515"Check interval = INT : 60",\
1516"Checked last = DWORD : 0",\
1517"Trigger count = DWORD : 0",\
1518"Trigger count required = DWORD : 0",\
1519"Time triggered first = STRING : [32] ",\
1520"Time triggered last = STRING : [32] ",\
1521"Condition = STRING : [256] /Runinfo/Run number > 100",\
1522"Alarm Class = STRING : [32] Alarm",\
1523"Alarm Message = STRING : [80] Run number became too large",\
1524"",\
1525NULL }
1526
1527#define ALARM_PERIODIC_STR(_name) const char *_name[] = {\
1528"[.]",\
1529"Active = BOOL : n",\
1530"Triggered = INT : 0",\
1531"Type = INT : 4",\
1532"Check interval = INT : 28800",\
1533"Checked last = DWORD : 0",\
1534"Trigger count = DWORD : 0",\
1535"Trigger count required = DWORD : 0",\
1536"Time triggered first = STRING : [32] ",\
1537"Time triggered last = STRING : [32] ",\
1538"Condition = STRING : [256] ",\
1539"Alarm Class = STRING : [32] Warning",\
1540"Alarm Message = STRING : [80] Please do your shift checks",\
1541"",\
1542NULL }
1543
1544/*---- malloc/free routines for debugging --------------------------*/
1545
1546#ifdef _MEM_DBG
1547#define M_MALLOC(x) dbg_malloc((x), __FILE__, __LINE__)
1548#define M_CALLOC(x,y) dbg_calloc((x), (y), __FILE__, __LINE__)
1549#define M_FREE(x) dbg_free ((x), __FILE__, __LINE__)
1550#else
1551#define M_MALLOC(x) malloc(x)
1552#define M_CALLOC(x,y) calloc(x,y)
1553#define M_FREE(x) free(x)
1554#endif
1555
1556void *dbg_malloc(unsigned int size, char *file, int line);
1557void *dbg_calloc(unsigned int size, unsigned int count, char *file, int line);
1558void dbg_free(void *adr, char *file, int line);
1559
1560/*---- CERN libray -------------------------------------------------*/
1561
1562#ifdef extname
1563#define PAWC_NAME pawc_
1564#else
1565#define PAWC_NAME PAWC
1566#endif
1567
1568#define PAWC_DEFINE(size) \
1569INT PAWC_NAME[size/4]; \
1570INT pawc_size = size
1571
1572/* bug in ROOT include files */
1573#undef GetCurrentTime
1574
1575/*---- RPC ---------------------------------------------------------*/
1576
1579#define RPC_IN (1 << 0)
1580#define RPC_OUT (1 << 1)
1581#define RPC_POINTER (1 << 2)
1582#define RPC_FIXARRAY (1 << 3)
1583#define RPC_VARARRAY (1 << 4)
1584#define RPC_OUTGOING (1 << 5)
1585
1588typedef struct {
1592} RPC_PARAM;
1593
1594#define MAX_RPC_PARAMS 20
1595
1602
1605#define RPC_MIN_ID 1
1606#define RPC_MAX_ID 9999
1607
1610#define CF_ENDIAN (1<<0)
1611#define CF_IEEE2VAX (1<<1)
1612#define CF_VAX2IEEE (1<<2)
1613//#define CF_ASCII (1<<3)
1614
1615#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1616#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1617
1618#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1619#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1620
1621#define CINT(_i) (* ((INT *) prpc_param[_i]))
1622#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1623
1624#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1625#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1626
1627#define CLONG(_i) (* ((long *) prpc_param[_i]))
1628#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1629
1630#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1631#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1632
1633#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1634#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1635
1636#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1637#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1638
1639#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1640#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1641
1642#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1643#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1644
1645#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1646#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1647
1648#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1649#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1650
1651#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1652#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1653
1654#define CINT(_i) (* ((INT *) prpc_param[_i]))
1655#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1656
1657#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1658#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1659
1660#define CLONG(_i) (* ((long *) prpc_param[_i]))
1661#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1662
1663#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1664#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1665
1666#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1667#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1668
1669#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1670#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1671
1672#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1673#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1674
1675#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1676#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1677
1678#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1679#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1680
1681
1682
1683#define cBYTE (* ((BYTE *) prpc_param[--n_param]))
1684#define cPBYTE ( ((BYTE *) prpc_param[--n_param]))
1685
1686#define cSHORT (* ((short *) prpc_param[--n_param]))
1687#define cPSHORT ( ((short *) prpc_param[--n_param]))
1688
1689#define cINT (* ((INT *) prpc_param[--n_param]))
1690#define cPINT ( ((INT *) prpc_param[--n_param]))
1691
1692#define cWORD (* ((WORD *) prpc_param[--n_param]))
1693#define cPWORD ( ((WORD *) prpc_param[--n_param]))
1694
1695#define cLONG (* ((long *) prpc_param[--n_param]))
1696#define cPLONG ( ((long *) prpc_param[--n_param]))
1697
1698#define cDWORD (* ((DWORD *) prpc_param[--n_param]))
1699#define cPDWORD ( ((DWORD *) prpc_param[--n_param]))
1700
1701#define cHNDLE (* ((HNDLE *) prpc_param[--n_param]))
1702#define cPHNDLE ( ((HNDLE *) prpc_param[--n_param]))
1703
1704#define cBOOL (* ((BOOL *) prpc_param[--n_param]))
1705#define cPBOOL ( ((BOOL *) prpc_param[--n_param]))
1706
1707#define cFLOAT (* ((float *) prpc_param[--n_param]))
1708#define cPFLOAT ( ((float *) prpc_param[--n_param]))
1709
1710#define cDOUBLE (* ((double *) prpc_param[--n_param]))
1711#define cPDOUBLE ( ((double *) prpc_param[--n_param]))
1712
1713#define cSTRING ( ((char *) prpc_param[--n_param]))
1714#define cARRAY ( ((void *) prpc_param[--n_param]))
1715
1718#define JS_LEVEL_0 0
1719#define JS_LEVEL_1 1
1720#define JS_MUST_BE_SUBDIR 1
1721#define JSFLAG_SAVE_KEYS (1<<1)
1722#define JSFLAG_FOLLOW_LINKS (1<<2)
1723#define JSFLAG_RECURSE (1<<3)
1724#define JSFLAG_LOWERCASE (1<<4)
1725#define JSFLAG_OMIT_NAMES (1<<5)
1726#define JSFLAG_OMIT_LAST_WRITTEN (1<<6)
1727#define JSFLAG_OMIT_OLD (1<<7)
1728
1729/*---- Function declarations ---------------------------------------*/
1730
1731/* make functions under WinNT dll exportable */
1732#if defined(OS_WINNT) && defined(MIDAS_DLL)
1733#define EXPRT __declspec(dllexport)
1734#else
1735#define EXPRT
1736#endif
1737
1738 /*---- common routines ----*/
1739 std::string cm_get_error(INT code);
1740 const char* EXPRT cm_get_version(void);
1741 const char* EXPRT cm_get_revision(void);
1742 [[deprecated("Use std::string cm_get_experiment_name();")]]
1744 std::string cm_get_experiment_name();
1746 INT EXPRT cm_get_environment(std::string *host_name, std::string *exp_name);
1749 [[deprecated("Use std::string cm_get_exptab_filename();")]]
1750 INT EXPRT cm_get_exptab_filename(char* filename, int filename_size);
1751 std::string cm_get_exptab_filename();
1752 [[deprecated("Please use the std::string version of this function")]]
1753 INT EXPRT cm_get_exptab(const char* exp_name, char* expdir, int expdir_size, char* expuser, int expuser_size);
1754 INT EXPRT cm_get_exptab(const char* exp_name, std::string* expdir, std::string* expuser);
1756 INT EXPRT cm_select_experiment_remote(const char *host_name, std::string *exp_name);
1758 INT EXPRT cm_connect_experiment(const char *host_name, const char *exp_name,
1759 const char *client_name, void (*func) (char *));
1760 INT EXPRT cm_connect_experiment1(const char *host_name, const char *exp_name,
1761 const char *client_name,
1762 void (*func) (char *), INT odb_size,
1763 DWORD watchdog_timeout);
1766 int sequence_number);
1770 INT EXPRT cm_query_transition(int *transition, int *run_number, int *trans_time);
1773 INT EXPRT cm_transition(INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag);
1775 std::string EXPRT cm_transition_name(int transition);
1777 INT EXPRT cm_register_function(INT id, INT(*func) (INT, void **));
1778 INT EXPRT cm_connect_client(const char *client_name, HNDLE * hConn);
1785 const char *host_name, char *client_name,
1786 INT computer_id, const char *password, DWORD watchdog_timeout);
1787#define HAVE_CM_GET_CLIENT_NAME 1
1788 std::string EXPRT cm_get_client_name();
1792 INT EXPRT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD * timeout, DWORD * last);
1793 INT EXPRT cm_watchdog_thread(void*unused);
1796 INT EXPRT cm_shutdown(const char *name, BOOL bUnique);
1797 INT EXPRT cm_exist(const char *name, BOOL bUnique);
1798 INT EXPRT cm_cleanup(const char *client_name, BOOL ignore_timeout);
1800#define HAVE_CM_PERIODIC_TASKS 1
1802 INT EXPRT cm_execute(const char *command, char *result, INT buf_size);
1804 [[deprecated("Please use the std::string version of this function")]]
1805 INT EXPRT cm_asctime(char *str, INT buf_size);
1806 std::string EXPRT cm_asctime();
1807 INT EXPRT cm_time(DWORD * t);
1809 void EXPRT cm_ack_ctrlc_pressed(void);
1811 int EXPRT cm_write_event_to_odb(HNDLE hDB, HNDLE hKey, const EVENT_HEADER* pevent, INT format);
1812
1813 INT EXPRT cm_set_msg_print(INT system_mask, INT user_mask, int (*func) (const char *));
1814 INT EXPRT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format, ...) MATTRPRINTF(5,6);
1815 INT EXPRT cm_msg1(INT message_type, const char *filename, INT line, const char *facility, const char *routine, const char *format, ...) MATTRPRINTF(6,7);
1818 INT EXPRT cm_msg_retrieve(INT n_message, char *message, INT buf_size);
1821 void EXPRT cm_msg_get_logfile(const char *facility, time_t t, std::string* filename, std::string* linkname, std::string* linktarget);
1825
1826 BOOL EXPRT equal_ustring(const char *str1, const char *str2);
1828 bool EXPRT ends_with_char(const std::string& s, char c);
1829 BOOL EXPRT strmatch(char* pattern, char*str);
1830 void EXPRT strarrayindex(char* odbpath, int* index1, int* index2);
1831 std::string msprintf(const char *format, ...) MATTRPRINTF(1,2);
1832
1833 std::string cm_expand_env(const char* str);
1834
1835 /*---- buffer manager ----*/
1836 INT EXPRT bm_open_buffer(const char *buffer_name, INT buffer_size, INT * buffer_handle);
1837 INT EXPRT bm_get_buffer_handle(const char *buffer_name, INT * buffer_handle);
1838 INT EXPRT bm_close_buffer(INT buffer_handle);
1840 INT EXPRT bm_init_buffer_counters(INT buffer_handle);
1841 INT EXPRT bm_get_buffer_info(INT buffer_handle, BUFFER_HEADER * buffer_header);
1842 INT EXPRT bm_get_buffer_level(INT buffer_handle, INT * n_bytes);
1843 INT EXPRT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size);
1846 INT EXPRT bm_match_event(short int event_id, short int trigger_mask, const EVENT_HEADER *pevent);
1847 INT EXPRT bm_request_event(INT buffer_handle,
1848 short int event_id,
1849 short int trigger_mask,
1850 INT sampling_type,
1851 INT * request_id,
1852 EVENT_HANDLER *func
1853 );
1854 INT EXPRT bm_add_event_request(INT buffer_handle,
1855 short int event_id,
1856 short int trigger_mask,
1857 INT sampling_type,
1858 EVENT_HANDLER *func,
1859 INT request_id);
1860 INT EXPRT bm_remove_event_request(INT buffer_handle, INT request_id);
1861 INT EXPRT bm_delete_request(INT request_id);
1862 INT EXPRT bm_send_event(INT buffer_handle, const EVENT_HEADER* event, int unused, int timeout_msec);
1863#define HAVE_BM_SEND_EVENT_VEC 1
1864 INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector<char>& event, int timeout_msec);
1865 INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector<std::vector<char>>& event, int timeout_msec);
1866 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);
1867 INT EXPRT bm_receive_event(INT buffer_handle, void *destination, INT * buf_size, int timeout_msec);
1868#define HAVE_BM_RECEIVE_EVENT_VEC 1
1869 INT EXPRT bm_receive_event_vec(INT buffer_handle, std::vector<char> *event, int timeout_msec);
1870#define HAVE_BM_RECEIVE_EVENT_ALLOC 1
1872 INT EXPRT bm_skip_event(INT buffer_handle);
1873 INT EXPRT bm_flush_cache(INT buffer_handle, int timeout_msec);
1874 INT EXPRT bm_poll_event(void);
1878
1882 /*---- online database functions -----*/
1883 INT EXPRT db_open_database(const char *database_name, INT database_size, HNDLE * hdb, const char *client_name);
1887
1888 INT EXPRT db_create_key(HNDLE hdb, HNDLE key_handle, const char *key_name, DWORD type);
1890 INT EXPRT db_set_value(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, const void *data, INT size, INT num_values, DWORD type);
1891 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);
1892 INT EXPRT db_get_value(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, void *data, INT * size, DWORD type, BOOL create);
1893 INT EXPRT db_resize_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, int num_values, int max_string_size);
1894#define HAVE_DB_GET_VALUE_STRING_CREATE_STRING_LENGTH 1
1895 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);
1896 INT EXPRT db_set_value_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string* s);
1898 INT EXPRT db_find_link(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE * subhKey);
1900 INT EXPRT db_find_link1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE * subhKey);
1901 INT EXPRT db_find_keys(HNDLE hDB, HNDLE hKey, char *odbpath, std::vector<HNDLE> &hKeyVector);
1903 INT EXPRT db_scan_tree(HNDLE hDB, HNDLE hKey, int level, INT(*callback) (HNDLE, HNDLE, KEY *, INT, void *), void *info);
1904 INT EXPRT db_scan_tree_link(HNDLE hDB, HNDLE hKey, int level, void (*callback) (HNDLE, HNDLE, KEY *, INT, void *), void *info);
1905 [[deprecated("Please use the std::string version of this function")]]
1906 INT EXPRT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size);
1907 std::string EXPRT db_get_path(HNDLE hDB, HNDLE hKey);
1914 INT EXPRT db_get_key_info(HNDLE hDB, HNDLE hKey, char *name, INT name_size, INT * type, INT * num_values, INT * item_size);
1916 INT EXPRT db_rename_key(HNDLE hDB, HNDLE hKey, const char *name);
1918 INT EXPRT db_get_data(HNDLE hdb, HNDLE key_handle, void *data, INT * buf_size, DWORD type);
1920 INT EXPRT db_get_data1(HNDLE hDB, HNDLE hKey, void *data, INT * buf_size, DWORD type, INT * num_values);
1922 INT EXPRT db_set_data(HNDLE hdb, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1923 INT EXPRT db_set_data1(HNDLE hdb, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1925 INT EXPRT db_set_link_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1930 INT EXPRT db_merge_data(HNDLE hDB, HNDLE hKeyRoot, const char *name, void *data, INT data_size, INT num_values, INT type);
1932 INT EXPRT db_create_record(HNDLE hdb, HNDLE hkey, const char *name, const char *init_str);
1933 INT EXPRT db_check_record(HNDLE hDB, HNDLE hKey, const char *key_name, const char *rec_str, BOOL correct);
1934 INT EXPRT db_open_record(HNDLE hdb, HNDLE hkey, void *ptr, INT rec_size, WORD access, void (*dispatcher) (INT, INT, void *), void *info);
1935 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);
1937 INT EXPRT db_get_record(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align);
1938 INT EXPRT db_get_record1(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align, const char *rec_str);
1939 INT EXPRT db_get_record2(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align, const char *rec_str, BOOL correct);
1940 INT EXPRT db_get_record_size(HNDLE hdb, HNDLE hKey, INT align, INT * buf_size);
1941 INT EXPRT db_set_record(HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align);
1942 INT EXPRT db_set_record2(HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align, const char *rec_str);
1945
1948
1949 INT EXPRT db_watch(HNDLE hDB, HNDLE hKey, void (*dispatcher) (INT, INT, INT, void *info), void *info);
1951 INT EXPRT db_unwatch_all(void);
1952
1953 INT EXPRT db_load(HNDLE hdb, HNDLE key_handle, const char *filename, BOOL bRemote);
1954 INT EXPRT db_save(HNDLE hdb, HNDLE key_handle, const char *filename, BOOL bRemote);
1955 INT EXPRT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT * buffer_size, const char *path);
1956 INT EXPRT db_paste(HNDLE hDB, HNDLE hKeyRoot, const char *buffer);
1957 INT EXPRT db_paste_xml(HNDLE hDB, HNDLE hKeyRoot, const char *buffer);
1958 INT EXPRT db_save_struct(HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append);
1959 INT EXPRT db_save_string(HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append);
1961 INT EXPRT db_copy_xml(HNDLE hDB, HNDLE hKey, char *buffer, int *buffer_size, bool header);
1962
1964 INT EXPRT db_load_json(HNDLE hdb, HNDLE key_handle, const char *filename);
1965 void EXPRT json_write(char **buffer, int* buffer_size, int* buffer_end, int level, const char* s, int quoted);
1966 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);
1967
1968 /* db_copy_json() is obsolete, use db_copy_json_save, _values and _ls instead */
1969 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);
1970
1971 /* json encoder using the "ODB save" encoding, for use with "ODB load" and db_paste_json() */
1972 INT EXPRT db_copy_json_save(HNDLE hDB, HNDLE hKey, char **buffer, int* buffer_size, int* buffer_end);
1973 /* json encoder using the "ls" format, for getting the contents of a single ODB subdirectory */
1974 INT EXPRT db_copy_json_ls(HNDLE hDB, HNDLE hKey, char **buffer, int* buffer_size, int* buffer_end);
1975 /* json encoder using the "get_values" format, for resolving links and normalized ODB path names (converted to lower-case) */
1977 /* json encoder for an ODB array */
1978 INT EXPRT db_copy_json_array(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end);
1979 /* json encoder for a single element of an ODB array */
1980 INT EXPRT db_copy_json_index(HNDLE hDB, HNDLE hKey, int index, char **buffer, int *buffer_size, int *buffer_end);
1981
1982 INT EXPRT db_paste_json(HNDLE hDB, HNDLE hKey, const char *buffer);
1983 INT EXPRT db_paste_json_node(HNDLE hDB, HNDLE hKey, int index, const MJsonNode* json_node);
1984
1985 MJsonNode* EXPRT db_sor(HNDLE hDB, const char* path); // show open records
1986 MJsonNode* EXPRT db_scl(HNDLE hDB); // show clients
1987
1988 [[deprecated("Please use the std::string version of this function")]]
1989 INT EXPRT db_sprintf(char *string, const void *data, INT data_size, INT index, DWORD type);
1990 [[deprecated("Please use the std::string version of this function")]]
1991 INT EXPRT db_sprintff(char *string, const char *format, const void *data, INT data_size, INT index, DWORD type);
1992 [[deprecated("Please use the std::string version of this function")]]
1993 INT EXPRT db_sprintfh(char *string, const void *data, INT data_size, INT index, DWORD type);
1994 std::string EXPRT db_sprintf(const void *data, INT data_size, INT index, DWORD type);
1995 std::string EXPRT db_sprintff(const char *format, const void *data, INT data_size, INT index, DWORD type);
1996 std::string EXPRT db_sprintfh(const void *data, INT data_size, INT index, DWORD type);
1997 INT EXPRT db_sscanf(const char *string, void *data, INT * data_size, INT index, DWORD type);
1998 INT db_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD * timeout, DWORD * last);
2001
2002 [[deprecated("Please use the std::string version of this function")]]
2003 char EXPRT *strcomb(const char **list);
2004 std::string EXPRT strcomb1(const char **list);
2005
2008 /*---- Bank routines ----*/
2009 void EXPRT bk_init(void *pbh);
2010 void EXPRT bk_init32(void *event);
2011 void EXPRT bk_init32a(void *event);
2012 BOOL EXPRT bk_is32(const void *event);
2013 BOOL EXPRT bk_is32a(const void *event);
2014 INT EXPRT bk_size(const void *pbh);
2015 void EXPRT bk_create(void *pbh, const char *name, WORD type, void **pdata);
2016 INT EXPRT bk_delete(void *event, const char *name);
2017 INT EXPRT bk_close(void *pbh, void *pdata);
2018 INT EXPRT bk_list(const void *pbh, char *bklist);
2019 INT EXPRT bk_locate(const void *pbh, const char *name, void *pdata);
2020 INT EXPRT bk_iterate(const void *pbh, BANK ** pbk, void *pdata);
2021 INT EXPRT bk_iterate32(const void *pbh, BANK32 ** pbk, void *pdata);
2022 INT EXPRT bk_iterate32a(const void *pbh, BANK32A ** pbk, void *pdata);
2023 INT EXPRT bk_copy(char * pevent, char * psrce, const char * bkname);
2024 INT EXPRT bk_swap(void *event, BOOL force);
2025 INT EXPRT bk_find(const BANK_HEADER * pbkh, const char *name, DWORD * bklen, DWORD * bktype, void **pdata);
2026
2027 /*---- RPC routines ----*/
2029 INT EXPRT rpc_add_allowed_host(const char* hostname);
2030 INT EXPRT rpc_check_allowed_host(const char* hostname);
2031
2037 INT EXPRT rpc_set_name(const char *name);
2038 std::string rpc_get_name();
2039 bool EXPRT rpc_is_remote(void);
2040 bool EXPRT rpc_is_connected(void);
2041 std::string rpc_get_mserver_hostname();
2042 bool EXPRT rpc_is_mserver(void);
2043 INT EXPRT rpc_set_debug(void (*func) (const char *), INT mode);
2044 void EXPRT rpc_debug_printf(const char *format, ...);
2045
2046 INT EXPRT rpc_register_server(int port, int *plsock, int *pport);
2050 INT EXPRT rpc_client_call(HNDLE hConn, DWORD routine_id, ...);
2051 INT EXPRT rpc_call(DWORD routine_id, ...);
2053 const char EXPRT *rpc_tid_name(INT id);
2054 const char EXPRT *rpc_tid_name_old(INT id);
2055 INT EXPRT rpc_name_tid(const char* name); // inverse of rpc_tid_name()
2056 INT EXPRT rpc_server_connect(const char *host_name, const char *exp_name);
2057 INT EXPRT rpc_client_connect(const char *host_name, INT midas_port, const char *client_name, HNDLE * hConnection);
2059
2060 INT EXPRT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode);
2062
2063 INT EXPRT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event);
2064 INT EXPRT rpc_send_event_sg(INT buffer_handle, int sg_n, const char* const sg_ptr[], const size_t sg_len[]);
2065
2067
2068 void EXPRT rpc_get_convert_flags(INT * convert_flags);
2069 void EXPRT rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags);
2070 void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags);
2071
2075 /*---- system services ----*/
2076 DWORD EXPRT ss_millitime(void);
2077 DWORD EXPRT ss_time(void);
2078 double EXPRT ss_time_sec(void);
2080 void EXPRT ss_tzset();
2081 time_t EXPRT ss_mktime(struct tm* tms);
2082 std::string EXPRT ss_asctime(void);
2084 BOOL EXPRT ss_kbhit(void);
2085 std::string EXPRT ss_getcwd();
2086
2087 double EXPRT ss_nan(void);
2088 int EXPRT ss_isnan(double x);
2089 int EXPRT ss_isfin(double x);
2090
2091 void EXPRT ss_clear_screen(void);
2092 void EXPRT ss_printf(INT x, INT y, const char *format, ...);
2093 void ss_set_screen_size(int x, int y);
2094
2095 char EXPRT *ss_getpass(const char *prompt);
2096 INT EXPRT ss_getchar(BOOL reset);
2097 char EXPRT *ss_crypt(const char *key, const char *salt);
2098 char EXPRT *ss_gets(char *string, int size);
2099
2100 void EXPRT *ss_ctrlc_handler(void (*func) (int));
2101
2102 INT EXPRT ss_write_tcp(int sock, const char *buffer, size_t buffer_size);
2103
2104 /*---- direct io routines ----*/
2107
2108 /*---- tape routines ----*/
2109 INT EXPRT ss_tape_open(char *path, INT oflag, INT * channel);
2111 INT EXPRT ss_tape_status(char *path);
2122
2123 /*---- disk routines ----*/
2124 double EXPRT ss_disk_free(const char *path);
2125 double EXPRT ss_file_size(const char *path);
2126 time_t EXPRT ss_file_time(const char *path);
2127 INT EXPRT ss_dir_exist(const char *path);
2128 INT EXPRT ss_file_exist(const char *path);
2129 INT EXPRT ss_file_link_exist(const char *path);
2130 INT EXPRT ss_file_remove(const char *path);
2131 INT EXPRT ss_file_find(const char *path, const char *pattern, char **plist);
2132 INT EXPRT ss_dir_find(const char *path, const char *pattern, char **plist);
2133 INT EXPRT ss_dirlink_find(const char *path, const char *pattern, char **plist);
2134 INT EXPRT ss_file_find(const char *path, const char *pattern, STRING_LIST*);
2135 INT EXPRT ss_dir_find(const char *path, const char *pattern, STRING_LIST*);
2136 INT EXPRT ss_dirlink_find(const char *path, const char *pattern, STRING_LIST*);
2137 double EXPRT ss_disk_size(const char *path);
2138 int EXPRT ss_file_copy(const char *src, const char *dst, bool append = false);
2139
2140 /*---- UTF8 unicode ----*/
2141 bool ss_is_valid_utf8(const char* s);
2142 bool ss_repair_utf8(char* s);
2143 bool ss_repair_utf8(std::string& s);
2144
2147 /*---- ELog functions ----*/
2148 INT EXPRT el_retrieve(char *tag, char *date, int *run, char *author,
2149 char *type, char *system, char *subject,
2150 char *text, int *textsize, char *orig_tag,
2151 char *reply_tag, char *attachment1,
2152 char *attachment2, char *attachment3, char *encoding);
2153 INT EXPRT el_submit(int run, const char *author, const char *type, const char *system,
2154 const char *subject, const char *text, const char *reply_to,
2155 const char *encoding,
2156 const char *afilename1, const char *buffer1, INT buffer_size1,
2157 const char *afilename2, const char *buffer2, INT buffer_size2,
2158 const char *afilename3, const char *buffer3, INT buffer_size3,
2159 char *tag, INT tag_size);
2160 INT EXPRT el_search_message(char *tag, int *fh, BOOL walk, char* filename, int filename_size);
2161 INT EXPRT el_search_run(int run, char *return_tag);
2162 INT EXPRT el_delete_message(const char *tag);
2163
2164 /*---- alarm functions ----*/
2165 INT EXPRT al_check(void);
2166 INT EXPRT al_trigger_alarm(const char *alarm_name, const char *alarm_message,
2167 const char *default_class, const char *cond_str, INT type);
2168 INT EXPRT al_trigger_class(const char *alarm_class, const char *alarm_message, BOOL first);
2169 INT EXPRT al_reset_alarm(const char *alarm_name);
2170 BOOL EXPRT al_evaluate_condition(const char* alarm_name, const char *condition, std::string *pvalue);
2171 INT al_get_alarms(std::string *presult);
2172 INT EXPRT al_define_odb_alarm(const char *name, const char *condition, const char *aclass, const char *message);
2173
2174 /*---- analyzer functions ----*/
2175 void EXPRT test_register(ANA_TEST * t);
2176 void EXPRT add_data_dir(char *result, char *file);
2177 void EXPRT lock_histo(INT id);
2178
2179 void EXPRT open_subfolder(const char *name);
2181
2182 /*---- image history functions ----*/
2183 int hs_image_retrieve(std::string image_name, time_t start, time_t stop,
2184 std::vector<time_t> &vtime, std::vector<std::string> &vfilename);
2185
2186#endif /* _MIDAS_H */
2187
/* end of msectionh */
2190/* emacs
2191 * Local Variables:
2192 * tab-width: 8
2193 * c-basic-offset: 3
2194 * indent-tabs-mode: nil
2195 * End:
2196 */
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:930
INT al_get_alarms(std::string *presult)
Definition alarm.cxx:853
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:16520
INT EXPRT bk_close(void *pbh, void *pdata)
Definition midas.cxx:16818
INT EXPRT bk_iterate32a(const void *pbh, BANK32A **pbk, void *pdata)
Definition midas.cxx:17141
INT EXPRT bk_swap(void *event, BOOL force)
Definition midas.cxx:17195
BOOL EXPRT bk_is32a(const void *event)
Definition midas.cxx:16475
INT EXPRT bk_delete(void *event, const char *name)
Definition midas.cxx:16712
BOOL EXPRT bk_is32(const void *event)
Definition midas.cxx:16453
INT EXPRT bk_iterate32(const void *pbh, BANK32 **pbk, void *pdata)
Definition midas.cxx:17105
INT EXPRT bk_locate(const void *pbh, const char *name, void *pdata)
Definition midas.cxx:16927
void EXPRT bk_init(void *pbh)
Definition midas.cxx:16444
INT EXPRT bk_list(const void *pbh, char *bklist)
Definition midas.cxx:16878
INT EXPRT bk_copy(char *pevent, char *psrce, const char *bkname)
Definition midas.cxx:16642
INT EXPRT bk_iterate(const void *pbh, BANK **pbk, void *pdata)
Definition midas.cxx:17084
void EXPRT bk_init32(void *event)
Definition midas.cxx:16507
void EXPRT bk_create(void *pbh, const char *name, WORD type, void **pdata)
Definition midas.cxx:16599
INT EXPRT bk_find(const BANK_HEADER *pbkh, const char *name, DWORD *bklen, DWORD *bktype, void **pdata)
Definition midas.cxx:16990
INT EXPRT bk_size(const void *pbh)
Definition midas.cxx:16533
INT EXPRT bm_open_buffer(const char *buffer_name, INT buffer_size, INT *buffer_handle)
Definition midas.cxx:6740
INT EXPRT bm_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, int timeout_msec)
Definition midas.cxx:9701
INT EXPRT bm_write_statistics_to_odb(void)
Definition midas.cxx:7303
INT EXPRT bm_delete_request(INT request_id)
Definition midas.cxx:8607
INT EXPRT bm_close_all_buffers(void)
Definition midas.cxx:7266
INT EXPRT bm_poll_event(void)
Definition midas.cxx:11164
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:8337
INT EXPRT bm_receive_event_vec(INT buffer_handle, std::vector< char > *event, int timeout_msec)
Definition midas.cxx:10847
INT EXPRT bm_skip_event(INT buffer_handle)
Definition midas.cxx:10912
INT EXPRT bm_empty_buffers(void)
Definition midas.cxx:11278
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:8488
INT EXPRT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size)
Definition midas.cxx:8163
INT EXPRT bm_receive_event(INT buffer_handle, void *destination, INT *buf_size, int timeout_msec)
Definition midas.cxx:10688
INT EXPRT bm_check_buffers(void)
Definition midas.cxx:10992
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:8315
INT EXPRT bm_remove_event_request(INT buffer_handle, INT request_id)
Definition midas.cxx:8541
INT EXPRT bm_close_buffer(INT buffer_handle)
Definition midas.cxx:7119
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:9801
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:8304
INT EXPRT bm_match_event(short int event_id, short int trigger_mask, const EVENT_HEADER *pevent)
Definition midas.cxx:6038
INT EXPRT bm_flush_cache(INT buffer_handle, int timeout_msec)
Definition midas.cxx:10245
INT EXPRT bm_get_buffer_handle(const char *buffer_name, INT *buffer_handle)
Definition midas.cxx:7098
INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector< char > &event, int timeout_msec)
Definition midas.cxx:9728
INT EXPRT bm_receive_event_alloc(INT buffer_handle, EVENT_HEADER **ppevent, int timeout_msec)
Definition midas.cxx:10769
INT EXPRT cm_register_transition(INT transition, INT(*func)(INT, char *), int sequence_number)
Definition midas.cxx:3616
INT EXPRT cm_shutdown(const char *name, BOOL bUnique)
Definition midas.cxx:7423
INT EXPRT cm_disconnect_client(HNDLE hConn, BOOL bShutdown)
Definition midas.cxx:2848
INT EXPRT cm_yield(INT millisec)
Definition midas.cxx:5665
INT EXPRT cm_get_experiment_database(HNDLE *hDB, HNDLE *hKeyClient)
Definition midas.cxx:3026
INT EXPRT cm_list_experiments_remote(const char *host_name, STRING_LIST *exp_names)
Definition midas.cxx:2627
INT EXPRT cm_get_watchdog_params(BOOL *call_watchdog, DWORD *timeout)
Definition midas.cxx:3340
INT EXPRT cm_connect_client(const char *client_name, HNDLE *hConn)
Definition midas.cxx:2781
INT EXPRT cm_connect_experiment(const char *host_name, const char *exp_name, const char *client_name, void(*func)(char *))
Definition midas.cxx:2293
INT EXPRT cm_list_experiments_local(STRING_LIST *exp_names)
Definition midas.cxx:2601
INT EXPRT cm_start_watchdog_thread(void)
Definition midas.cxx:7378
INT EXPRT cm_get_experiment_semaphore(INT *semaphore_alarm, INT *semaphore_elog, INT *semaphore_history, INT *semaphore_msg)
Definition midas.cxx:3048
INT EXPRT cm_set_client_run_state(INT state)
Definition midas.cxx:3806
INT EXPRT cm_transition(INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag)
Definition midas.cxx:5309
INT EXPRT cm_stop_watchdog_thread(void)
Definition midas.cxx:7393
std::string EXPRT cm_asctime()
Definition midas.cxx:1427
INT EXPRT cm_register_function(INT id, INT(*func)(INT, void **))
Definition midas.cxx:5813
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:2312
INT EXPRT cm_check_client(HNDLE hDB, HNDLE hKeyClient)
Definition midas.cxx:1884
INT EXPRT cm_periodic_tasks(void)
Definition midas.cxx:5602
INT EXPRT cm_select_experiment_remote(const char *host_name, std::string *exp_name)
Definition midas.cxx:2734
INT EXPRT cm_register_server(void)
Definition midas.cxx:3475
void EXPRT cm_ack_ctrlc_pressed(void)
Definition midas.cxx:5479
INT EXPRT cm_execute(const char *command, char *result, INT buf_size)
Definition midas.cxx:5746
INT EXPRT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
Definition midas.cxx:3359
INT EXPRT cm_cleanup(const char *client_name, BOOL ignore_timeout)
Definition midas.cxx:7633
INT EXPRT cm_select_experiment_local(std::string *exp_name)
Definition midas.cxx:2685
std::string std::string cm_expand_env(const char *str)
Definition midas.cxx:7733
std::string EXPRT cm_get_client_name()
Definition midas.cxx:2074
INT EXPRT cm_exec_script(const char *odb_path_to_script)
Definition midas.cxx:5484
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:1908
INT EXPRT cm_get_exptab(const char *exp_name, char *expdir, int expdir_size, char *expuser, int expuser_size)
Definition midas.cxx:1845
INT EXPRT cm_disconnect_experiment(void)
Definition midas.cxx:2861
INT EXPRT cm_synchronize(DWORD *sec)
Definition midas.cxx:1384
std::string cm_get_exptab_filename()
Definition midas.cxx:1803
INT EXPRT cm_register_deferred_transition(INT transition, BOOL(*func)(INT, BOOL))
Definition midas.cxx:3860
INT EXPRT cm_set_experiment_local(const char *exp_name)
Definition midas.cxx:2181
INT EXPRT cm_get_environment(char *host_name, int host_name_size, char *exp_name, int exp_name_size)
Definition midas.cxx:2149
const char *EXPRT cm_get_version(void)
Definition midas.cxx:1491
INT EXPRT cm_deregister_transition(INT transition)
Definition midas.cxx:3692
INT EXPRT cm_check_deferred_transition(void)
Definition midas.cxx:3912
std::string cm_get_experiment_name()
Definition midas.cxx:1595
INT EXPRT cm_set_transition_sequence(INT transition, INT sequence_number)
Definition midas.cxx:3746
const char *EXPRT cm_get_revision(void)
Definition midas.cxx:1499
INT EXPRT cm_watchdog_thread(void *unused)
Definition midas.cxx:7352
INT EXPRT cm_set_experiment_database(HNDLE hDB, HNDLE hKeyClient)
Definition midas.cxx:2954
BOOL EXPRT cm_is_ctrlc_pressed(void)
Definition midas.cxx:5475
INT EXPRT cm_time(DWORD *t)
Definition midas.cxx:1449
INT EXPRT cm_transition_cleanup()
Definition midas.cxx:5290
INT EXPRT cm_set_watchdog_params(BOOL call_watchdog, DWORD timeout)
Definition midas.cxx:3298
INT EXPRT cm_exist(const char *name, BOOL bUnique)
Definition midas.cxx:7543
INT EXPRT cm_set_experiment_semaphore(INT semaphore_alarm, INT semaphore_elog, INT semaphore_history, INT semaphore_msg)
Definition midas.cxx:2973
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:794
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:919
INT() RPC_HANDLER(INT index, void *prpc_param[])
Definition midas.h:923
struct eqpmnt EQUIPMENT
bool ss_is_valid_utf8(const char *string)
Definition system.cxx:8146
INT ss_dir_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6874
int ss_isnan(double x)
Definition system.cxx:8039
BOOL ss_kbhit()
Definition system.cxx:3736
double ss_disk_size(const char *path)
Definition system.cxx:7126
time_t ss_mktime(struct tm *tms)
Definition system.cxx:3437
DWORD ss_millitime()
Definition system.cxx:3465
int ss_file_exist(const char *path)
Definition system.cxx:7196
INT ss_tape_rskip(INT channel, INT count)
Definition system.cxx:6370
INT ss_tape_write(INT channel, void *pdata, INT count)
Definition system.cxx:6110
int ss_isfin(double x)
Definition system.cxx:8044
INT ss_dirlink_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6950
INT ss_getchar(BOOL reset)
Definition system.cxx:7581
INT ss_tape_rewind(INT channel)
Definition system.cxx:6426
INT ss_tape_fskip(INT channel, INT count)
Definition system.cxx:6310
INT ss_tape_close(INT channel)
Definition system.cxx:5980
double ss_disk_free(const char *path)
Definition system.cxx:6698
time_t ss_file_time(const char *path)
Definition system.cxx:7088
int ss_file_link_exist(const char *path)
Definition system.cxx:7232
std::string ss_getcwd()
Definition system.cxx:5848
INT ss_tape_get_blockn(INT channel)
Definition system.cxx:6646
double ss_file_size(const char *path)
Definition system.cxx:7050
INT ss_tape_status(char *path)
Definition system.cxx:6024
DWORD ss_settime(DWORD seconds)
Definition system.cxx:3547
INT ss_tape_mount(INT channel)
Definition system.cxx:6534
char * ss_getpass(const char *prompt)
Definition system.cxx:7518
INT ss_directio_give_port(INT start, INT end)
Definition system.cxx:7889
void ss_tzset()
Definition system.cxx:3427
INT ss_write_tcp(int sock, const char *buffer, size_t buffer_size)
Definition system.cxx:5424
int ss_dir_exist(const char *path)
Definition system.cxx:7264
void ss_set_screen_size(int x, int y)
Definition system.cxx:7427
INT ss_tape_spool(INT channel)
Definition system.cxx:6478
INT ss_file_remove(const char *path)
Definition system.cxx:7030
INT ss_tape_read(INT channel, void *pdata, INT *count)
Definition system.cxx:6170
int ss_file_copy(const char *src, const char *dst, bool append)
Definition system.cxx:7297
DWORD ss_time()
Definition system.cxx:3534
std::string ss_asctime()
Definition system.cxx:3621
double ss_time_sec()
Definition system.cxx:3539
INT ss_sleep(INT millisec)
Definition system.cxx:3700
INT ss_tape_unmount(INT channel)
Definition system.cxx:6590
double ss_nan()
Definition system.cxx:8018
INT ss_tape_write_eof(INT channel)
Definition system.cxx:6244
bool ss_repair_utf8(char *string)
Definition system.cxx:8229
void ss_clear_screen()
Definition system.cxx:7377
char * ss_crypt(const char *buf, const char *salt)
Definition system.cxx:7969
INT ss_tape_open(char *path, INT oflag, INT *channel)
Definition system.cxx:5889
void ss_printf(INT x, INT y, const char *format,...)
Definition system.cxx:7460
INT ss_directio_lock_port(INT start, INT end)
Definition system.cxx:7925
char * ss_gets(char *string, int size)
Definition system.cxx:7848
void * ss_ctrlc_handler(void(*func)(int))
Definition system.cxx:3971
INT ss_file_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6791
INT EXPRT cm_msg_early_init(void)
Definition midas.cxx:480
INT EXPRT cm_msg_facilities(STRING_LIST *list)
Definition midas.cxx:517
INT EXPRT cm_msg_open_buffer(void)
Definition midas.cxx:487
INT EXPRT cm_msg_close_buffer(void)
Definition midas.cxx:500
INT EXPRT cm_msg_register(EVENT_HANDLER *func)
Definition midas.cxx:1066
INT EXPRT INT EXPRT INT EXPRT cm_msg_flush_buffer(void)
Definition midas.cxx:880
std::string cm_get_error(INT code)
Definition midas.cxx:468
INT EXPRT cm_msg_retrieve(INT n_message, char *message, INT buf_size)
Definition midas.cxx:1349
INT EXPRT cm_msg_retrieve2(const char *facility, time_t t, int min_messages, char **messages, int *num_messages)
Definition midas.cxx:1279
void EXPRT cm_msg_get_logfile(const char *facility, time_t t, std::string *filename, std::string *linkname, std::string *linktarget)
Definition midas.cxx:552
INT EXPRT cm_set_msg_print(INT system_mask, INT user_mask, int(*func)(const char *))
Definition midas.cxx:660
BOOL EXPRT equal_ustring(const char *str1, const char *str2)
Definition odb.cxx:3206
INT db_find_key1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4130
INT db_sprintfh(char *string, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:10989
INT db_remove_open_record(HNDLE hDB, HNDLE hKey, BOOL lock)
Definition odb.cxx:12506
INT db_get_data_index(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT idx, DWORD type)
Definition odb.cxx:6898
INT db_delete_key(HNDLE hDB, HNDLE hKey, BOOL follow_links)
Definition odb.cxx:3861
INT db_send_changed_records()
Definition odb.cxx:13790
INT db_find_link(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4279
INT db_get_value(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, void *data, INT *buf_size, DWORD type, BOOL create)
Definition odb.cxx:5420
INT db_reorder_key(HNDLE hDB, HNDLE hKey, INT idx)
Definition odb.cxx:6366
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:1032
INT db_save_json(HNDLE hDB, HNDLE hKey, const char *filename, int flags)
Definition odb.cxx:10532
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:13303
INT db_open_database(const char *xdatabase_name, INT database_size, HNDLE *hDB, const char *client_name)
Definition odb.cxx:1789
INT db_get_open_records(HNDLE hDB, HNDLE hKey, char *str, INT buf_size, BOOL fix)
Definition odb.cxx:5193
INT db_paste_xml(HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
Definition odb.cxx:9003
std::string strcomb1(const char **list)
Definition odb.cxx:600
INT db_save_xml(HNDLE hDB, HNDLE hKey, const char *filename)
Definition odb.cxx:9485
INT db_set_link_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
Definition odb.cxx:7430
INT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size)
Definition odb.cxx:4995
INT db_get_record1(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align, const char *rec_str)
Definition odb.cxx:11812
INT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT *buffer_size, const char *path)
Definition odb.cxx:8222
INT db_set_link_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:7759
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:3240
INT db_get_record_size(HNDLE hDB, HNDLE hKey, INT align, INT *buf_size)
Definition odb.cxx:11621
INT db_get_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
Definition odb.cxx:6544
INT db_create_key(HNDLE hDB, HNDLE hKey, const char *key_name, DWORD type)
Definition odb.cxx:3313
INT db_check_record(HNDLE hDB, HNDLE hKey, const char *keyname, const char *rec_str, BOOL correct)
Definition odb.cxx:12984
INT db_copy_json_save(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10480
INT db_copy_xml(HNDLE hDB, HNDLE hKey, char *buffer, int *buffer_size, bool header)
Definition odb.cxx:9042
MJsonNode * db_scl(HNDLE hDB)
Definition odb.cxx:14125
INT db_save_struct(HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append)
Definition odb.cxx:10632
INT db_get_record(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align)
Definition odb.cxx:11715
INT db_unwatch(HNDLE hDB, HNDLE hKey)
Definition odb.cxx:13901
INT db_set_mode(HNDLE hDB, HNDLE hKey, WORD mode, BOOL recurse)
Definition odb.cxx:8032
INT db_get_next_link(HNDLE hDB, HNDLE hKey, HNDLE *subkey_handle)
Definition odb.cxx:5821
INT db_scan_tree_link(HNDLE hDB, HNDLE hKey, INT level, void(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
Definition odb.cxx:4851
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:9250
INT db_scan_tree(HNDLE hDB, HNDLE hKey, INT level, INT(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
Definition odb.cxx:4772
INT db_get_key(HNDLE hDB, HNDLE hKey, KEY *key)
Definition odb.cxx:6024
INT db_get_link(HNDLE hDB, HNDLE hKey, KEY *key)
Definition odb.cxx:6077
INT db_load(HNDLE hDB, HNDLE hKeyRoot, const char *filename, BOOL bRemote)
Definition odb.cxx:8131
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:13948
INT db_sprintff(char *string, const char *format, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:10925
INT db_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
Definition odb.cxx:3019
INT db_set_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:7653
INT db_find_keys(HNDLE hDB, HNDLE hKeyRoot, char *odbpath, std::vector< HNDLE > &hKeyVector)
Definition odb.cxx:4591
INT db_save_string(HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append)
Definition odb.cxx:10693
INT db_copy_json_index(HNDLE hDB, HNDLE hKey, int index, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10224
INT db_paste(HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
Definition odb.cxx:8492
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:6196
INT db_close_all_databases(void)
Definition odb.cxx:2365
INT db_set_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
Definition odb.cxx:7220
INT db_enum_link(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
Definition odb.cxx:5730
INT db_copy_json_ls(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10426
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:10389
INT db_sprintf(char *string, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:10849
INT db_update_last_activity(DWORD millitime)
Definition odb.cxx:2697
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:10513
void EXPRT strarrayindex(char *odbpath, int *index1, int *index2)
Definition odb.cxx:3278
INT db_set_data1(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
Definition odb.cxx:7318
INT db_get_data1(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type, INT *num_values)
Definition odb.cxx:6761
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:10448
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:5266
INT db_find_key(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4084
INT db_find_link1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4444
INT db_copy_json_array(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10155
MJsonNode * db_sor(HNDLE hDB, const char *root_path)
Definition odb.cxx:14175
INT db_get_link_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
Definition odb.cxx:6661
INT db_rename_key(HNDLE hDB, HNDLE hKey, const char *name)
Definition odb.cxx:6266
BOOL EXPRT ends_with_ustring(const char *str, const char *suffix)
Definition odb.cxx:3227
void json_write(char **buffer, int *buffer_size, int *buffer_end, int level, const char *s, int quoted)
Definition odb.cxx:9532
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:6137
int db_delete_client_info(HNDLE hDB, int pid)
Definition odb.cxx:2796
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:5370
INT db_notify_clients_array(HNDLE hDB, HNDLE hKeys[], INT size)
Definition odb.cxx:12631
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:13454
INT db_merge_data(HNDLE hDB, HNDLE hKeyRoot, const char *name, void *data, INT data_size, INT num_values, INT type)
Definition odb.cxx:7933
INT db_set_record(HNDLE hDB, HNDLE hKey, void *data, INT buf_size, INT align)
Definition odb.cxx:12299
INT db_set_data_index1(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type, BOOL bNotify)
Definition odb.cxx:7833
INT db_enum_key(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
Definition odb.cxx:5591
INT EXPRT db_resize_string(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, int num_values, int max_string_length)
Definition odb.cxx:14039
INT db_close_record(HNDLE hDB, HNDLE hKey)
Definition odb.cxx:13486
INT db_create_record(HNDLE hDB, HNDLE hKey, const char *orig_key_name, const char *init_str)
Definition odb.cxx:12808
INT db_sscanf(const char *data_str, void *data, INT *data_size, INT i, DWORD tid)
Definition odb.cxx:11320
INT db_unwatch_all()
Definition odb.cxx:13931
INT db_add_open_record(HNDLE hDB, HNDLE hKey, WORD access_mode)
Definition odb.cxx:12371
INT EXPRT db_set_value_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string *s)
Definition odb.cxx:14019
INT db_set_num_values(HNDLE hDB, HNDLE hKey, INT num_values)
Definition odb.cxx:7507
INT db_get_record2(HNDLE hDB, HNDLE hKey, void *data, INT *xbuf_size, INT align, const char *rec_str, BOOL correct)
Definition odb.cxx:12176
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:3606
INT db_close_database(HNDLE hDB)
Definition odb.cxx:2157
INT db_protect_database(HNDLE hDB)
Definition odb.cxx:3172
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:15273
void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags)
Definition midas.cxx:11744
INT EXPRT rpc_client_connect(const char *host_name, INT midas_port, const char *client_name, HNDLE *hConnection)
Definition midas.cxx:12050
INT EXPRT rpc_register_server(int port, int *plsock, int *pport)
Definition midas.cxx:14576
INT EXPRT rpc_client_disconnect(HNDLE hConn, BOOL bShutdown)
Definition midas.cxx:12714
INT EXPRT rpc_client_call(HNDLE hConn, DWORD routine_id,...)
Definition midas.cxx:13510
INT EXPRT rpc_register_functions(const RPC_LIST *new_list, RPC_HANDLER func)
Definition midas.cxx:11865
INT EXPRT rpc_set_timeout(HNDLE hConn, int timeout_msec, int *old_timeout_msec=NULL)
Definition midas.cxx:13036
INT EXPRT rpc_server_connect(const char *host_name, const char *exp_name)
Definition midas.cxx:12419
std::string rpc_get_name()
Definition midas.cxx:13122
bool EXPRT rpc_is_remote(void)
Definition midas.cxx:12799
void EXPRT rpc_debug_printf(const char *format,...)
Definition midas.cxx:13199
const char EXPRT * rpc_tid_name_old(INT id)
Definition midas.cxx:11809
INT EXPRT cm_query_transition(int *transition, int *run_number, int *trans_time)
Definition midas.cxx:14158
INT EXPRT rpc_server_loop(void)
Definition midas.cxx:15881
INT EXPRT rpc_clear_allowed_hosts(void)
Definition midas.cxx:15248
INT EXPRT rpc_test_rpc()
Definition midas.cxx:15084
std::string rpc_get_mserver_hostname()
Definition midas.cxx:12843
INT EXPRT rpc_get_hw_type()
Definition midas.cxx:12872
bool EXPRT rpc_is_connected(void)
Definition midas.cxx:12821
INT EXPRT rpc_call(DWORD routine_id,...)
Definition midas.cxx:13701
const char EXPRT * rpc_tid_name(INT id)
Definition midas.cxx:11802
INT EXPRT rpc_flush_event(void)
Definition midas.cxx:14076
INT EXPRT rpc_register_client(const char *name, RPC_LIST *list)
Definition midas.cxx:11846
INT EXPRT rpc_server_shutdown(void)
Definition midas.cxx:16221
INT EXPRT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode)
Definition midas.cxx:13939
INT EXPRT rpc_get_timeout(HNDLE hConn)
Definition midas.cxx:13011
INT EXPRT rpc_set_debug(void(*func)(const char *), INT mode)
Definition midas.cxx:13172
INT EXPRT rpc_name_tid(const char *name)
Definition midas.cxx:11816
bool EXPRT rpc_is_mserver(void)
Definition midas.cxx:12856
INT EXPRT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event)
Definition midas.cxx:13957
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:13963
INT EXPRT rpc_set_name(const char *name)
Definition midas.cxx:13146
INT rpc_get_convert_flags(void)
Definition midas.cxx:13068
INT EXPRT rpc_tid_size(INT id)
Definition midas.cxx:11795
INT EXPRT rpc_check_allowed_host(const char *hostname)
Definition midas.cxx:15302
void EXPRT rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags)
Definition midas.cxx:11719
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:1723
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:412
INT EXPRT bm_get_buffer_level(INT buffer_handle, INT *n_bytes)
Definition midas.cxx:7861
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:7814
char INT8
Definition midas.h:137
INT EXPRT bm_init_buffer_counters(INT buffer_handle)
Definition midas.cxx:8086
int INT
Definition midas.h:129
#define MAX_RPC_PARAMS
Definition midas.h:1594
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:346
#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:1735
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:356
struct eqpmnt * PEQUIPMENT
Definition midas.h:1150
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:1721
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:17761
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:1464
DWORD system_message_last
Definition midas.h:1467
BOOL stop_run
Definition midas.h:1471
INT execute_interval
Definition midas.h:1469
DWORD execute_last
Definition midas.h:1470
BOOL alarm_sound
Definition midas.h:1474
INT system_message_interval
Definition midas.h:1466
BOOL write_elog_message
Definition midas.h:1465
INT type
Definition midas.h:1498
DWORD trigger_count
Definition midas.h:1501
INT check_interval
Definition midas.h:1499
DWORD trigger_count_required
Definition midas.h:1502
DWORD checked_last
Definition midas.h:1500
INT triggered
Definition midas.h:1497
BOOL active
Definition midas.h:1496
const char ** init_str
Definition midas.h:1265
BOOL enabled
Definition midas.h:1266
INT param_size
Definition midas.h:1264
void * histo_folder
Definition midas.h:1267
void * parameters
Definition midas.h:1263
BOOL clear_histos
Definition midas.h:1318
BOOL histo_dump
Definition midas.h:1316
BOOL events_to_odb
Definition midas.h:1320
DWORD previous_count
Definition midas.h:1341
DWORD count
Definition midas.h:1340
BOOL registered
Definition midas.h:1339
BOOL value
Definition midas.h:1342
AR_STATS ar_stats
Definition midas.h:1308
HNDLE request_id
Definition midas.h:1297
BANK_LIST * bank_list
Definition midas.h:1291
HNDLE hkey_variables
Definition midas.h:1298
char ** init_string
Definition midas.h:1294
HNDLE hkey_common
Definition midas.h:1299
ANA_MODULE ** ana_module
Definition midas.h:1290
void * addr
Definition midas.h:1300
INT rwnt_buffer_size
Definition midas.h:1292
AR_INFO ar_info
Definition midas.h:1288
DWORD events_received
Definition midas.h:1306
DWORD events_written
Definition midas.h:1307
HNDLE buffer_handle
Definition midas.h:1296
BOOL enabled
Definition midas.h:1275
INT sampling_type
Definition midas.h:1273
INT trigger_mask
Definition midas.h:1272
INT event_id
Definition midas.h:1271
double events_written
Definition midas.h:1283
double events_per_sec
Definition midas.h:1282
double events_received
Definition midas.h:1281
DWORD type
Definition midas.h:1228
DWORD data_size
Definition midas.h:1229
DWORD reserved
Definition midas.h:1230
DWORD data_size
Definition midas.h:1223
DWORD type
Definition midas.h:1222
DWORD flags
Definition midas.h:1211
DWORD data_size
Definition midas.h:1210
void * addr
Definition midas.h:1245
DWORD size
Definition midas.h:1242
HNDLE def_key
Definition midas.h:1247
char ** init_str
Definition midas.h:1243
WORD type
Definition midas.h:1241
DWORD n_data
Definition midas.h:1246
BOOL output_flag
Definition midas.h:1244
Definition midas.h:1214
WORD type
Definition midas.h:1216
WORD data_size
Definition midas.h:1217
INT unused1
Definition midas.h:945
INT num_sent_events
Definition midas.h:944
INT unused0
Definition midas.h:938
float unused2
Definition midas.h:946
DWORD watchdog_timeout
Definition midas.h:952
INT write_wait
Definition midas.h:948
BOOL read_wait
Definition midas.h:947
DWORD last_activity
Definition midas.h:951
BOOL all_flag
Definition midas.h:950
BOOL wake_up
Definition midas.h:949
INT max_request_index
Definition midas.h:942
INT read_pointer
Definition midas.h:941
INT num_received_events
Definition midas.h:943
INT num_in_events
Definition midas.h:965
INT write_pointer
Definition midas.h:964
INT num_clients
Definition midas.h:960
INT max_client_index
Definition midas.h:961
INT num_out_events
Definition midas.h:966
INT read_pointer
Definition midas.h:963
HNDLE semaphore
Definition midas.h:1004
double bytes_read
Definition midas.h:1022
std::timed_mutex buffer_mutex
Definition midas.h:989
size_t read_cache_rp
Definition midas.h:997
std::timed_mutex read_cache_mutex
Definition midas.h:994
BOOL get_all_flag
Definition midas.h:1009
int last_count_lock
Definition midas.h:1017
INT client_index
Definition midas.h:990
char client_name[NAME_LENGTH]
Definition midas.h:991
std::timed_mutex write_cache_mutex
Definition midas.h:999
size_t shm_size
Definition midas.h:1006
char * read_cache
Definition midas.h:996
int max_requested_space
Definition midas.h:1020
int count_sent
Definition midas.h:1013
size_t write_cache_rp
Definition midas.h:1002
int client_count_write_wait[MAX_CLIENTS]
Definition midas.h:1023
int count_write_wait
Definition midas.h:1015
int wait_client_index
Definition midas.h:1019
BOOL locked
Definition midas.h:1008
size_t write_cache_wp
Definition midas.h:1003
DWORD time_write_wait
Definition midas.h:1016
int count_read
Definition midas.h:1021
BOOL callback
Definition midas.h:1007
char * write_cache
Definition midas.h:1001
BUFFER_HEADER * buffer_header
Definition midas.h:993
size_t read_cache_wp
Definition midas.h:998
std::atomic< size_t > read_cache_size
Definition midas.h:995
std::atomic< size_t > write_cache_size
Definition midas.h:1000
double bytes_sent
Definition midas.h:1014
DWORD wait_start_time
Definition midas.h:1018
INT shm_handle
Definition midas.h:1005
char buffer_name[NAME_LENGTH]
Definition midas.h:992
std::atomic_bool attached
Definition midas.h:988
int count_lock
Definition midas.h:1012
DWORD client_time_write_wait[MAX_CLIENTS]
Definition midas.h:1024
void * bd_info
Definition midas.h:1072
INT n_channels
Definition midas.h:1082
midas_thread_t thread_id
Definition midas.h:1083
DD_MT_CHANNEL * channel
Definition midas.h:1085
DWORD def_offset
Definition midas.h:1370
DWORD event_id
Definition midas.h:1368
std::string * pequipment_name
Definition midas.h:1167
EQUIPMENT_INFO * pequipment
Definition midas.h:1166
void * dd_info
Definition midas.h:1162
DD_MT_BUFFER * mt_buffer
Definition midas.h:1163
INT stop_thread
Definition midas.h:1164
MUTEX_T * mutex
Definition midas.h:1165
BOOL enabled
Definition midas.h:1161
BOOL priority_read
Definition midas.h:1168
DWORD flags
Definition midas.h:1160
double event_limit
Definition midas.h:1099
WORD trigger_mask
Definition midas.h:1091
WORD event_id
Definition midas.h:1090
DWORD num_subevents
Definition midas.h:1100
double events_per_sec
Definition midas.h:1138
double events_sent
Definition midas.h:1137
double kbytes_per_sec
Definition midas.h:1139
short int event_id
Definition midas.h:853
DWORD data_size
Definition midas.h:857
DWORD serial_number
Definition midas.h:855
DWORD time_stamp
Definition midas.h:856
short int trigger_mask
Definition midas.h:854
short int event_id
Definition midas.h:930
short int trigger_mask
Definition midas.h:931
INT sampling_type
Definition midas.h:932
BOOL valid
Definition midas.h:929
DWORD def_offset
Definition midas.h:1363
DWORD record_type
Definition midas.h:1360
DWORD time
Definition midas.h:1362
DWORD data_size
Definition midas.h:1364
DWORD event_id
Definition midas.h:1361
DWORD time
Definition midas.h:1375
DWORD offset
Definition midas.h:1376
DWORD event_id
Definition midas.h:1374
Definition midas.h:1027
INT num_values
Definition midas.h:1029
DWORD type
Definition midas.h:1028
WORD notify_count
Definition midas.h:1035
INT total_size
Definition midas.h:1032
WORD access_mode
Definition midas.h:1034
INT last_written
Definition midas.h:1038
INT parent_keylist
Definition midas.h:1037
INT next_key
Definition midas.h:1036
INT item_size
Definition midas.h:1033
INT data
Definition midas.h:1031
INT num_keys
Definition midas.h:1043
INT parent
Definition midas.h:1042
INT first_key
Definition midas.h:1044
INT watchdog_timeout
Definition midas.h:1431
BOOL required
Definition midas.h:1430
BOOL auto_restart
Definition midas.h:1436
DWORD check_interval
Definition midas.h:1432
BOOL auto_stop
Definition midas.h:1435
BOOL auto_start
Definition midas.h:1434
DWORD first_failed
Definition midas.h:1438
INT id
Definition midas.h:1597
RPC_HANDLER * dispatch
Definition midas.h:1600
const char * name
Definition midas.h:1598
WORD flags
Definition midas.h:1590
WORD tid
Definition midas.h:1589
INT n
Definition midas.h:1591
INT transition_in_progress
Definition midas.h:1400
INT requested_transition
Definition midas.h:1402
DWORD start_time_binary
Definition midas.h:1404
INT state
Definition midas.h:1397
DWORD stop_time_binary
Definition midas.h:1406
INT online_mode
Definition midas.h:1398
INT start_abort
Definition midas.h:1401
INT run_number
Definition midas.h:1399
Definition midas.h:1233
DWORD type
Definition midas.h:1235
DWORD n_data
Definition midas.h:1236
DWORD subevent_number
Definition midas.h:1187
DWORD serial_number
Definition midas.h:1186
DWORD odb_out
Definition midas.h:1188
DWORD bytes_sent
Definition midas.h:1190
DWORD events_sent
Definition midas.h:1191
EQUIPMENT_STATS stats
Definition midas.h:1193
void * event_descrip
Definition midas.h:1177
EQUIPMENT_INFO info
Definition midas.h:1173
DWORD last_called
Definition midas.h:1180
HNDLE buffer_handle
Definition midas.h:1184
char name[NAME_LENGTH]
Definition midas.h:1172
DWORD last_idle
Definition midas.h:1181
DWORD events_collected
Definition midas.h:1192
DWORD odb_in
Definition midas.h:1189
HNDLE hkey_variables
Definition midas.h:1185
void * cd_info
Definition midas.h:1178
INT format
Definition midas.h:1183
INT(* cd)(INT cmd, PEQUIPMENT)
Definition midas.h:1175
INT(* readout)(char *, INT)
Definition midas.h:1174
DWORD poll_count
Definition midas.h:1182
DEVICE_DRIVER * driver
Definition midas.h:1176
INT status
Definition midas.h:1179
DWORD n_tag
Definition midas.h:1382
std::string def_fn
Definition midas.h:1386
DWORD base_time
Definition midas.h:1390
std::string index_fn
Definition midas.h:1385
std::string hist_fn
Definition midas.h:1384
std::string event_name
Definition midas.h:1381
DWORD def_offset
Definition midas.h:1391
DWORD event_id
Definition midas.h:1380
char c
Definition system.cxx:1312
static te_expr * list(state *s)
Definition tinyexpr.c:567