34#define DATABASE_VERSION 3
37#define MIDAS_VERSION "2.1"
41#pragma clang diagnostic ignored "-Wdeprecated-declarations"
48#if defined( VAX ) || defined( __VMS )
52#if defined( _MSC_VER )
58#if defined( __MSDOS__ )
69#if defined ( __linux__ )
75#if defined ( __APPLE__ )
82#if defined(OS_LINUX) || defined(OS_OSF1) || defined(OS_ULTRIX) || defined(OS_FREEBSD) || defined(OS_SOLARIS) || defined(OS_IRIX) || defined(OS_DARWIN)
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
94#ifndef MIDAS_TYPE_DEFINED
95#define MIDAS_TYPE_DEFINED
98typedef unsigned short int WORD;
119#elif defined( OS_WINNT )
135#ifndef NO_INT_TYPES_DEFINE
163#if defined(__alpha) || defined(_LP64)
164#define POINTER_T long int
170#define PTYPE POINTER_T
175#elif defined(OS_UNIX)
186#if defined(OS_MSDOS) || defined(OS_WINNT)
187#define DIR_SEPARATOR '\\'
188#define DIR_SEPARATOR_STR "\\"
190#define DIR_SEPARATOR ']'
191#define DIR_SEPARATOR_STR "]"
193#define DIR_SEPARATOR '/'
194#define DIR_SEPARATOR_STR "/"
198#if defined( _MSC_VER )
199#define INLINE __inline
200#elif defined(__GNUC__)
202#define INLINE __inline__
209#ifndef _LARGEFILE64_SOURCE
214#if defined( _MSC_VER )
215#pragma warning( disable: 4996)
219#define MATTRPRINTF(a, b) __attribute__ ((format (printf, a, b)))
221#define MATTRPRINTF(a, b)
226#ifndef MUTEX_T_DEFINED
228#define MUTEX_T_DEFINED
230#elif defined(OS_LINUX)
231#ifndef MUTEX_T_DEFINED
233#define MUTEX_T_DEFINED
236#ifndef MUTEX_T_DEFINED
238#define MUTEX_T_DEFINED
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)
262#define TAPE_BUFFER_SIZE 0x100000
264#define TAPE_BUFFER_SIZE 0x8000
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
287#define DEFAULT_RPC_TIMEOUT 10000
288#define WATCHDOG_INTERVAL 1000
290#define DEFAULT_WATCHDOG_TIMEOUT 10000
305#define STATE_STOPPED 1
306#define STATE_PAUSED 2
307#define STATE_RUNNING 3
311#define FORMAT_MIDAS 1
314#define FORMAT_FIXED 4
321#define GET_ALL (1<<0)
322#define GET_NONBLOCKING (1<<1)
323#define GET_RECENT (1<<2)
344#define TID_FLOAT64 10
345#define TID_BITFIELD 11
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)
393#define RPC_HNDLE_MSERVER -1
394#define RPC_HNDLE_CONNECT -2
396#define RPC_NO_REPLY 0x80000000l
400#define WF_WATCH_ME (1<<0)
401#define WF_CALL_WD (1<<1)
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)
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)
422#define EQ_USER (1<<8)
426#define RO_RUNNING (1<<0)
427#define RO_STOPPED (1<<1)
428#define RO_PAUSED (1<<2)
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)
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)
469#define LAM_SOURCE(c, s) (c<<24 | ((s) & 0xFFFFFF))
475#define LAM_STATION(s) (1<<(s-1))
481#define LAM_SOURCE_CRATE(c) (c>>24)
487#define LAM_SOURCE_STATION(s) ((s) & 0xFFFFFF)
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
509#define MAX(a,b) (((a)>(b))?(a):(b))
515#define MIN(a,b) (((a)<(b))?(a):(b))
522#define ALIGN8(x) (((x)+7) & ~7)
526#define VALIGN(adr,align) (((POINTER_T) (adr)+(align)-1) & ~((align)-1))
537#define EVENTID_ALL -1
538#define TRIGGER_ALL -1
542#define MT_ERROR (1<<0)
543#define MT_INFO (1<<1)
544#define MT_DEBUG (1<<2)
545#define MT_USER (1<<3)
547#define MT_TALK (1<<5)
548#define MT_CALL (1<<6)
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"
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__
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
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
619#define BM_INVALID_PARAM 215
620#define BM_MORE_EVENTS 216
621#define BM_INVALID_MIXING 217
623#define BM_CORRUPTED 219
624#define BM_INVALID_SIZE 220
632#define DB_CREATED 302
633#define DB_NO_MEMORY 303
634#define DB_INVALID_NAME 304
635#define DB_INVALID_HANDLE 305
636#define DB_NO_SLOT 306
637#define DB_NO_SEMAPHORE 307
638#define DB_MEMSIZE_MISMATCH 308
639#define DB_INVALID_PARAM 309
641#define DB_KEY_EXIST 311
643#define DB_KEY_CREATED 313
644#define DB_TRUNCATED 314
645#define DB_TYPE_MISMATCH 315
646#define DB_NO_MORE_SUBKEYS 316
647#define DB_FILE_ERROR 317
648#define DB_NO_ACCESS 318
649#define DB_STRUCT_SIZE_MISMATCH 319
650#define DB_OPEN_RECORD 320
651#define DB_OUT_OF_RANGE 321
652#define DB_INVALID_LINK 322
653#define DB_CORRUPTED 323
654#define DB_STRUCT_MISMATCH 324
655#define DB_TIMEOUT 325
656#define DB_VERSION_MISMATCH 326
664#define SS_CREATED 402
665#define SS_NO_MEMORY 403
666#define SS_INVALID_NAME 404
667#define SS_INVALID_HANDLE 405
668#define SS_INVALID_ADDRESS 406
669#define SS_FILE_ERROR 407
670#define SS_NO_SEMAPHORE 408
671#define SS_NO_PROCESS 409
672#define SS_NO_THREAD 410
673#define SS_SOCKET_ERROR 411
674#define SS_TIMEOUT 412
675#define SS_SERVER_RECV 413
676#define SS_CLIENT_RECV 414
679#define SS_NO_TAPE 417
680#define SS_DEV_BUSY 418
681#define SS_IO_ERROR 419
682#define SS_TAPE_ERROR 420
683#define SS_NO_DRIVER 421
684#define SS_END_OF_TAPE 422
685#define SS_END_OF_FILE 423
686#define SS_FILE_EXISTS 424
687#define SS_NO_SPACE 425
688#define SS_INVALID_FORMAT 426
689#define SS_NO_ROOT 427
690#define SS_SIZE_MISMATCH 428
691#define SS_NO_MUTEX 429
699#define RPC_ABORT SS_ABORT
700#define RPC_NO_CONNECTION 502
701#define RPC_NET_ERROR 503
702#define RPC_TIMEOUT 504
703#define RPC_EXCEED_BUFFER 505
704#define RPC_NOT_REGISTERED 506
705#define RPC_CONNCLOSED 507
706#define RPC_INVALID_ID 508
707#define RPC_SHUTDOWN 509
708#define RPC_NO_MEMORY 510
709#define RPC_DOUBLE_DEFINED 511
710#define RPC_MUTEX_TIMEOUT 512
718#define FE_ERR_ODB 602
720#define FE_ERR_DISABLED 604
721#define FE_ERR_DRIVER 605
722#define FE_PARTIALLY_DISABLED 606
723#define FE_NOT_YET_READ 607
728#define HS_FILE_ERROR 702
729#define HS_NO_MEMORY 703
730#define HS_TRUNCATED 704
731#define HS_WRONG_INDEX 705
732#define HS_UNDEFINED_EVENT 706
733#define HS_UNDEFINED_VAR 707
738#define FTP_NET_ERROR 802
739#define FTP_FILE_ERROR 803
740#define FTP_RESPONSE_ERROR 804
741#define FTP_INVALID_ARG 805
746#define EL_FILE_ERROR 902
747#define EL_NO_MESSAGE 903
748#define EL_TRUNCATED 904
749#define EL_FIRST_MSG 905
750#define EL_LAST_MSG 906
755#define AL_INVALID_NAME 1002
756#define AL_ERROR_ODB 1003
758#define AL_TRIGGERED 1005
767#define CMD_GET_THRESHOLD 6
768#define CMD_GET_THRESHOLD_CURRENT 7
769#define CMD_GET_THRESHOLD_ZERO 8
770#define CMD_SET_LABEL 9
771#define CMD_GET_LABEL 10
774#define CMD_MISC_LAST 12
776#define CMD_SET_FIRST CMD_MISC_LAST+1
777#define CMD_SET CMD_SET_FIRST
778#define CMD_SET_VOLTAGE_LIMIT CMD_SET_FIRST+1
779#define CMD_SET_CURRENT_LIMIT CMD_SET_FIRST+2
780#define CMD_SET_RAMPUP CMD_SET_FIRST+3
781#define CMD_SET_RAMPDOWN CMD_SET_FIRST+4
782#define CMD_SET_TRIP_TIME CMD_SET_FIRST+5
783#define CMD_SET_CHSTATE CMD_SET_FIRST+6
784#define CMD_SET_LAST CMD_SET_FIRST+6
786#define CMD_GET_FIRST CMD_SET_LAST+1
787#define CMD_GET CMD_GET_FIRST
788#define CMD_GET_CURRENT CMD_GET_FIRST+1
789#define CMD_GET_TRIP CMD_GET_FIRST+2
790#define CMD_GET_STATUS CMD_GET_FIRST+3
791#define CMD_GET_TEMPERATURE CMD_GET_FIRST+4
792#define CMD_GET_DEMAND CMD_GET_FIRST+5
793#define CMD_GET_LAST CMD_GET_FIRST+5
795#define CMD_GET_DIRECT CMD_GET_LAST+1
796#define CMD_GET_VOLTAGE_LIMIT CMD_GET_DIRECT
797#define CMD_GET_CURRENT_LIMIT CMD_GET_DIRECT+2
798#define CMD_GET_RAMPUP CMD_GET_DIRECT+3
799#define CMD_GET_RAMPDOWN CMD_GET_DIRECT+4
800#define CMD_GET_TRIP_TIME CMD_GET_DIRECT+5
801#define CMD_GET_CHSTATE CMD_GET_DIRECT+6
802#define CMD_GET_CRATEMAP CMD_GET_DIRECT+7
803#define CMD_GET_DEMAND_DIRECT CMD_GET_DIRECT+8
804#define CMD_GET_DIRECT_LAST CMD_GET_DIRECT+8
806#define CMD_ENABLE_COMMAND (1<<14)
807#define CMD_DISABLE_COMMAND (1<<15)
820#define CMD_INTERRUPT_ENABLE 100
821#define CMD_INTERRUPT_DISABLE 101
822#define CMD_INTERRUPT_ATTACH 102
823#define CMD_INTERRUPT_DETACH 103
827#define BD_GETS(s,z,p,t) info->bd(CMD_GETS, info->bd_info, s, z, p, t)
828#define BD_READS(s,z,t) info->bd(CMD_READ, info->bd_info, s, z, t)
829#define BD_PUTS(s) info->bd(CMD_PUTS, info->bd_info, s)
830#define BD_WRITES(s) info->bd(CMD_WRITE, info->bd_info, s)
839#define ANA_CONTINUE 1
866#define TRIGGER_MASK(e) ((((EVENT_HEADER *) e)-1)->trigger_mask)
873#define EVENT_ID(e) ((((EVENT_HEADER *) e)-1)->event_id)
880#define SERIAL_NUMBER(e) ((((EVENT_HEADER *) e)-1)->serial_number)
887#define TIME_STAMP(e) ((((EVENT_HEADER *) e)-1)->time_stamp)
894#define DATA_SIZE(e) ((((EVENT_HEADER *) e)-1)->data_size)
896#define EVENT_SOURCE(e,o) (* (INT*) (e+o))
900#define EVENTID_BOR ((short int) 0x8000)
901#define EVENTID_EOR ((short int) 0x8001)
902#define EVENTID_MESSAGE ((short int) 0x8002)
906#define EVENTID_FRAG1 ((short int) 0xC000)
907#define EVENTID_FRAG ((short int) 0xD000)
911#define MIDAS_MAGIC 0x494d
1050#define DF_INPUT (1<<0)
1051#define DF_OUTPUT (1<<1)
1052#define DF_PRIO_DEVICE (1<<2)
1053#define DF_READ_ONLY (1<<3)
1054#define DF_MULTITHREAD (1<<4)
1055#define DF_HW_RAMP (1<<5)
1056#define DF_LABELS_FROM_DEVICE (1<<6)
1057#define DF_REPORT_TEMP (1<<7)
1058#define DF_REPORT_STATUS (1<<8)
1059#define DF_REPORT_CHSTATE (1<<9)
1060#define DF_REPORT_CRATEMAP (1<<10)
1061#define DF_QUICKSTART (1<<11)
1062#define DF_POLL_DEMAND (1<<12)
1063#define DF_PRIORITY_READ (1<<13)
1112#define EQUIPMENT_COMMON_STR "\
1113Event ID = WORD : 0\n\
1114Trigger mask = WORD : 0\n\
1115Buffer = STRING : [32] SYSTEM\n\
1118Format = STRING : [8] FIXED\n\
1119Enabled = BOOL : 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\
1131Write cache size = INT : 100000\n\
1145#define EQUIPMENT_STATISTICS_STR "\
1146Events sent = DOUBLE : 0\n\
1147Events per sec. = DOUBLE : 0\n\
1148kBytes per sec. = DOUBLE : 0\n\
1203#define BANK_FORMAT_VERSION 1
1204#define BANK_FORMAT_32BIT (1<<4)
1205#define BANK_FORMAT_64BIT_ALIGNED (1<<5)
1318 char histo_dump_filename[256];
1320 char last_histo_filename[256];
1322 char global_memory_name[8];
1325#define ANA_OUTPUT_INFO_STR "\
1326Filename = STRING : [256] run%05d.asc\n\
1328Histo Dump = BOOL : 0\n\
1329Histo Dump Filename = STRING : [256] his%05d.rz\n\
1330Clear histos = BOOL : 1\n\
1331Last Histo Filename = STRING : [256] last.rz\n\
1332Events to ODB = BOOL : 1\n\
1333Global Memory Name = STRING : [8] ONLN\n\
1346#define SET_TEST(t, v) { if (!t.registered) test_register(&t); t.value = (v); }
1347#define TEST(t) (t.value)
1350#define DEF_TEST(t) ANA_TEST t = { #t, 0, 0, FALSE };
1352#define DEF_TEST(t) extern ANA_TEST t;
1357#define RT_DATA (*((DWORD *) "HSDA"))
1358#define RT_DEF (*((DWORD *) "HSDF"))
1404 char start_time[32];
1410#define RUNINFO_STR(_name) const char *_name[] = {\
1413"Online Mode = INT : 1",\
1414"Run number = INT : 0",\
1415"Transition in progress = INT : 0",\
1416"Start abort = INT : 0",\
1417"Requested transition = INT : 0",\
1418"Start time = STRING : [32] Tue Sep 09 15:04:42 1997",\
1419"Start time binary = DWORD : 0",\
1420"Stop time = STRING : [32] Tue Sep 09 15:04:42 1997",\
1421"Stop time binary = DWORD : 0",\
1434 char start_command[256];
1438 char alarm_class[32];
1442#define AT_INTERNAL 1
1444#define AT_EVALUATED 3
1445#define AT_PERIODIC 4
1448#define PROGRAM_INFO_STR(_name) const char *_name[] = {\
1450"Required = BOOL : n",\
1451"Watchdog timeout = INT : 10000",\
1452"Check interval = DWORD : 180000",\
1453"Start command = STRING : [256] ",\
1454"Auto start = BOOL : n",\
1455"Auto stop = BOOL : n",\
1456"Auto restart = BOOL : n",\
1457"Alarm class = STRING : [32] ",\
1458"First failed = DWORD : 0",\
1469 char execute_command[256];
1473 char display_bgcolor[32];
1474 char display_fgcolor[32];
1478#define ALARM_CLASS_STR(_name) const char *_name[] = {\
1480"Write system message = BOOL : y",\
1481"Write Elog message = BOOL : n",\
1482"System message interval = INT : 60",\
1483"System message last = DWORD : 0",\
1484"Execute command = STRING : [256] ",\
1485"Execute interval = INT : 0",\
1486"Execute last = DWORD : 0",\
1487"Stop run = BOOL : n",\
1488"Display BGColor = STRING : [32] red",\
1489"Display FGColor = STRING : [32] black",\
1490"Alarm sound = BOOL : y"\
1504 char time_triggered_first[32];
1505 char time_triggered_last[32];
1506 char condition[256];
1507 char alarm_class[32];
1508 char alarm_message[80];
1511#define ALARM_ODB_STR(_name) const char *_name[] = {\
1513"Active = BOOL : n",\
1514"Triggered = INT : 0",\
1516"Check interval = INT : 60",\
1517"Checked last = DWORD : 0",\
1518"Trigger count = DWORD : 0",\
1519"Trigger count required = DWORD : 0",\
1520"Time triggered first = STRING : [32] ",\
1521"Time triggered last = STRING : [32] ",\
1522"Condition = STRING : [256] /Runinfo/Run number > 100",\
1523"Alarm Class = STRING : [32] Alarm",\
1524"Alarm Message = STRING : [80] Run number became too large",\
1528#define ALARM_PERIODIC_STR(_name) const char *_name[] = {\
1530"Active = BOOL : n",\
1531"Triggered = INT : 0",\
1533"Check interval = INT : 28800",\
1534"Checked last = DWORD : 0",\
1535"Trigger count = DWORD : 0",\
1536"Trigger count required = DWORD : 0",\
1537"Time triggered first = STRING : [32] ",\
1538"Time triggered last = STRING : [32] ",\
1539"Condition = STRING : [256] ",\
1540"Alarm Class = STRING : [32] Warning",\
1541"Alarm Message = STRING : [80] Please do your shift checks",\
1548#define M_MALLOC(x) dbg_malloc((x), __FILE__, __LINE__)
1549#define M_CALLOC(x,y) dbg_calloc((x), (y), __FILE__, __LINE__)
1550#define M_FREE(x) dbg_free ((x), __FILE__, __LINE__)
1552#define M_MALLOC(x) malloc(x)
1553#define M_CALLOC(x,y) calloc(x,y)
1554#define M_FREE(x) free(x)
1564#define PAWC_NAME pawc_
1566#define PAWC_NAME PAWC
1569#define PAWC_DEFINE(size) \
1570INT PAWC_NAME[size/4]; \
1574#undef GetCurrentTime
1580#define RPC_IN (1 << 0)
1581#define RPC_OUT (1 << 1)
1582#define RPC_POINTER (1 << 2)
1583#define RPC_FIXARRAY (1 << 3)
1584#define RPC_VARARRAY (1 << 4)
1585#define RPC_OUTGOING (1 << 5)
1595#define MAX_RPC_PARAMS 20
1607#define RPC_MAX_ID 9999
1611#define CF_ENDIAN (1<<0)
1612#define CF_IEEE2VAX (1<<1)
1613#define CF_VAX2IEEE (1<<2)
1616#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1617#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1619#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1620#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1622#define CINT(_i) (* ((INT *) prpc_param[_i]))
1623#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1625#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1626#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1628#define CLONG(_i) (* ((long *) prpc_param[_i]))
1629#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1631#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1632#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1634#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1635#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1637#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1638#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1640#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1641#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1643#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1644#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1646#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1647#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1649#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1650#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1652#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1653#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1655#define CINT(_i) (* ((INT *) prpc_param[_i]))
1656#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1658#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1659#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1661#define CLONG(_i) (* ((long *) prpc_param[_i]))
1662#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1664#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1665#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1667#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1668#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1670#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1671#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1673#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1674#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1676#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1677#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1679#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1680#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1684#define cBYTE (* ((BYTE *) prpc_param[--n_param]))
1685#define cPBYTE ( ((BYTE *) prpc_param[--n_param]))
1687#define cSHORT (* ((short *) prpc_param[--n_param]))
1688#define cPSHORT ( ((short *) prpc_param[--n_param]))
1690#define cINT (* ((INT *) prpc_param[--n_param]))
1691#define cPINT ( ((INT *) prpc_param[--n_param]))
1693#define cWORD (* ((WORD *) prpc_param[--n_param]))
1694#define cPWORD ( ((WORD *) prpc_param[--n_param]))
1696#define cLONG (* ((long *) prpc_param[--n_param]))
1697#define cPLONG ( ((long *) prpc_param[--n_param]))
1699#define cDWORD (* ((DWORD *) prpc_param[--n_param]))
1700#define cPDWORD ( ((DWORD *) prpc_param[--n_param]))
1702#define cHNDLE (* ((HNDLE *) prpc_param[--n_param]))
1703#define cPHNDLE ( ((HNDLE *) prpc_param[--n_param]))
1705#define cBOOL (* ((BOOL *) prpc_param[--n_param]))
1706#define cPBOOL ( ((BOOL *) prpc_param[--n_param]))
1708#define cFLOAT (* ((float *) prpc_param[--n_param]))
1709#define cPFLOAT ( ((float *) prpc_param[--n_param]))
1711#define cDOUBLE (* ((double *) prpc_param[--n_param]))
1712#define cPDOUBLE ( ((double *) prpc_param[--n_param]))
1714#define cSTRING ( ((char *) prpc_param[--n_param]))
1715#define cARRAY ( ((void *) prpc_param[--n_param]))
1721#define JS_MUST_BE_SUBDIR 1
1722#define JSFLAG_SAVE_KEYS (1<<1)
1723#define JSFLAG_FOLLOW_LINKS (1<<2)
1724#define JSFLAG_RECURSE (1<<3)
1725#define JSFLAG_LOWERCASE (1<<4)
1726#define JSFLAG_OMIT_NAMES (1<<5)
1727#define JSFLAG_OMIT_LAST_WRITTEN (1<<6)
1728#define JSFLAG_OMIT_OLD (1<<7)
1733#if defined(OS_WINNT) && defined(MIDAS_DLL)
1734#define EXPRT __declspec(dllexport)
1743 [[
deprecated(
"Use std::string cm_get_experiment_name();")]]
1750 [[
deprecated(
"Use std::string cm_get_exptab_filename();")]]
1753 [[
deprecated(
"Please use the std::string version of this function")]]
1760 const char *client_name,
void (*func) (
char *));
1762 const char *client_name,
1764 DWORD watchdog_timeout);
1767 int sequence_number);
1786 const char *
host_name,
char *client_name,
1788#define HAVE_CM_GET_CLIENT_NAME 1
1801#define HAVE_CM_PERIODIC_TASKS 1
1805 [[
deprecated(
"Please use the std::string version of this function")]]
1864#define HAVE_BM_SEND_EVENT_VEC 1
1869#define HAVE_BM_RECEIVE_EVENT_VEC 1
1871#define HAVE_BM_RECEIVE_EVENT_ALLOC 1
1895#define HAVE_DB_GET_VALUE_STRING_CREATE_STRING_LENGTH 1
1906 [[
deprecated(
"Please use the std::string version of this function")]]
1989 [[
deprecated(
"Please use the std::string version of this function")]]
1991 [[
deprecated(
"Please use the std::string version of this function")]]
1993 [[
deprecated(
"Please use the std::string version of this function")]]
2003 [[
deprecated(
"Please use the std::string version of this function")]]
2185 std::vector<time_t> &
vtime, std::vector<std::string> &
vfilename);
INT transition(INT run_number, char *error)
INT EXPRT al_trigger_class(const char *alarm_class, const char *alarm_message, BOOL first)
BOOL EXPRT al_evaluate_condition(const char *alarm_name, const char *condition, std::string *pvalue)
INT EXPRT al_define_odb_alarm(const char *name, const char *condition, const char *aclass, const char *message)
INT al_get_alarms(std::string *presult)
INT EXPRT al_reset_alarm(const char *alarm_name)
INT EXPRT al_trigger_alarm(const char *alarm_name, const char *alarm_message, const char *default_class, const char *cond_str, INT type)
void EXPRT bk_init32a(void *event)
INT EXPRT bk_close(void *pbh, void *pdata)
INT EXPRT bk_iterate32a(const void *pbh, BANK32A **pbk, void *pdata)
INT EXPRT bk_swap(void *event, BOOL force)
BOOL EXPRT bk_is32a(const void *event)
INT EXPRT bk_delete(void *event, const char *name)
BOOL EXPRT bk_is32(const void *event)
INT EXPRT bk_iterate32(const void *pbh, BANK32 **pbk, void *pdata)
INT EXPRT bk_locate(const void *pbh, const char *name, void *pdata)
void EXPRT bk_init(void *pbh)
INT EXPRT bk_list(const void *pbh, char *bklist)
INT EXPRT bk_copy(char *pevent, char *psrce, const char *bkname)
INT EXPRT bk_iterate(const void *pbh, BANK **pbk, void *pdata)
void EXPRT bk_init32(void *event)
void EXPRT bk_create(void *pbh, const char *name, WORD type, void **pdata)
INT EXPRT bk_find(const BANK_HEADER *pbkh, const char *name, DWORD *bklen, DWORD *bktype, void **pdata)
INT EXPRT bk_size(const void *pbh)
INT EXPRT bm_open_buffer(const char *buffer_name, INT buffer_size, INT *buffer_handle)
INT EXPRT bm_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, int timeout_msec)
INT EXPRT bm_write_statistics_to_odb(void)
INT EXPRT bm_delete_request(INT request_id)
INT EXPRT bm_close_all_buffers(void)
INT EXPRT bm_poll_event(void)
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)
INT EXPRT bm_receive_event_vec(INT buffer_handle, std::vector< char > *event, int timeout_msec)
INT EXPRT bm_skip_event(INT buffer_handle)
INT EXPRT bm_empty_buffers(void)
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)
INT EXPRT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size)
INT EXPRT bm_receive_event(INT buffer_handle, void *destination, INT *buf_size, int timeout_msec)
INT EXPRT bm_check_buffers(void)
INT EXPRT bm_compose_event_threadsafe(EVENT_HEADER *event_header, short int event_id, short int trigger_mask, DWORD data_size, DWORD *serial)
INT EXPRT bm_remove_event_request(INT buffer_handle, INT request_id)
INT EXPRT bm_close_buffer(INT buffer_handle)
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)
INT EXPRT bm_compose_event(EVENT_HEADER *event_header, short int event_id, short int trigger_mask, DWORD data_size, DWORD serial)
INT EXPRT bm_match_event(short int event_id, short int trigger_mask, const EVENT_HEADER *pevent)
INT EXPRT bm_flush_cache(INT buffer_handle, int timeout_msec)
INT EXPRT bm_get_buffer_handle(const char *buffer_name, INT *buffer_handle)
INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector< char > &event, int timeout_msec)
INT EXPRT bm_receive_event_alloc(INT buffer_handle, EVENT_HEADER **ppevent, int timeout_msec)
INT EXPRT cm_register_transition(INT transition, INT(*func)(INT, char *), int sequence_number)
INT EXPRT cm_shutdown(const char *name, BOOL bUnique)
INT EXPRT cm_disconnect_client(HNDLE hConn, BOOL bShutdown)
INT EXPRT cm_yield(INT millisec)
INT EXPRT cm_get_experiment_database(HNDLE *hDB, HNDLE *hKeyClient)
INT EXPRT cm_list_experiments_remote(const char *host_name, STRING_LIST *exp_names)
INT EXPRT cm_get_watchdog_params(BOOL *call_watchdog, DWORD *timeout)
INT EXPRT cm_connect_client(const char *client_name, HNDLE *hConn)
INT EXPRT cm_connect_experiment(const char *host_name, const char *exp_name, const char *client_name, void(*func)(char *))
INT EXPRT cm_list_experiments_local(STRING_LIST *exp_names)
INT EXPRT cm_start_watchdog_thread(void)
INT EXPRT cm_get_experiment_semaphore(INT *semaphore_alarm, INT *semaphore_elog, INT *semaphore_history, INT *semaphore_msg)
INT EXPRT cm_set_client_run_state(INT state)
INT EXPRT cm_transition(INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag)
INT EXPRT cm_stop_watchdog_thread(void)
std::string EXPRT cm_asctime()
INT EXPRT cm_register_function(INT id, INT(*func)(INT, void **))
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)
INT EXPRT cm_check_client(HNDLE hDB, HNDLE hKeyClient)
INT EXPRT cm_periodic_tasks(void)
INT EXPRT cm_select_experiment_remote(const char *host_name, std::string *exp_name)
INT EXPRT cm_register_server(void)
void EXPRT cm_ack_ctrlc_pressed(void)
INT EXPRT cm_execute(const char *command, char *result, INT buf_size)
INT EXPRT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
INT EXPRT cm_cleanup(const char *client_name, BOOL ignore_timeout)
INT EXPRT cm_select_experiment_local(std::string *exp_name)
std::string std::string cm_expand_env(const char *str)
std::string EXPRT cm_get_client_name()
INT EXPRT cm_exec_script(const char *odb_path_to_script)
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)
INT EXPRT cm_get_exptab(const char *exp_name, char *expdir, int expdir_size, char *expuser, int expuser_size)
INT EXPRT cm_disconnect_experiment(void)
INT EXPRT cm_synchronize(DWORD *sec)
std::string cm_get_exptab_filename()
INT EXPRT cm_register_deferred_transition(INT transition, BOOL(*func)(INT, BOOL))
INT EXPRT cm_set_experiment_local(const char *exp_name)
INT EXPRT cm_get_environment(char *host_name, int host_name_size, char *exp_name, int exp_name_size)
const char *EXPRT cm_get_version(void)
INT EXPRT cm_deregister_transition(INT transition)
INT EXPRT cm_check_deferred_transition(void)
std::string cm_get_experiment_name()
INT EXPRT cm_set_transition_sequence(INT transition, INT sequence_number)
const char *EXPRT cm_get_revision(void)
INT EXPRT cm_watchdog_thread(void *unused)
INT EXPRT cm_set_experiment_database(HNDLE hDB, HNDLE hKeyClient)
BOOL EXPRT cm_is_ctrlc_pressed(void)
INT EXPRT cm_time(DWORD *t)
INT EXPRT cm_transition_cleanup()
INT EXPRT cm_set_watchdog_params(BOOL call_watchdog, DWORD timeout)
INT EXPRT cm_exist(const char *name, BOOL bUnique)
INT EXPRT cm_set_experiment_semaphore(INT semaphore_alarm, INT semaphore_elog, INT semaphore_history, INT semaphore_msg)
INT EXPRT el_search_run(int run, char *return_tag)
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)
INT EXPRT el_delete_message(const char *tag)
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)
INT EXPRT el_search_message(char *tag, int *fh, BOOL walk, char *filename, int filename_size)
void() EVENT_HANDLER(HNDLE buffer_handler, HNDLE request_id, EVENT_HEADER *event_header, void *event_data)
INT() RPC_HANDLER(INT index, void *prpc_param[])
bool ss_is_valid_utf8(const char *string)
INT ss_dir_find(const char *path, const char *pattern, char **plist)
double ss_disk_size(const char *path)
time_t ss_mktime(struct tm *tms)
int ss_file_exist(const char *path)
INT ss_tape_rskip(INT channel, INT count)
INT ss_tape_write(INT channel, void *pdata, INT count)
INT ss_dirlink_find(const char *path, const char *pattern, char **plist)
INT ss_getchar(BOOL reset)
INT ss_tape_rewind(INT channel)
INT ss_tape_fskip(INT channel, INT count)
INT ss_tape_close(INT channel)
double ss_disk_free(const char *path)
time_t ss_file_time(const char *path)
int ss_file_link_exist(const char *path)
INT ss_tape_get_blockn(INT channel)
double ss_file_size(const char *path)
INT ss_tape_status(char *path)
DWORD ss_settime(DWORD seconds)
INT ss_tape_mount(INT channel)
char * ss_getpass(const char *prompt)
INT ss_directio_give_port(INT start, INT end)
INT ss_write_tcp(int sock, const char *buffer, size_t buffer_size)
int ss_dir_exist(const char *path)
void ss_set_screen_size(int x, int y)
INT ss_tape_spool(INT channel)
INT ss_file_remove(const char *path)
INT ss_tape_read(INT channel, void *pdata, INT *count)
int ss_file_copy(const char *src, const char *dst, bool append)
INT ss_sleep(INT millisec)
INT ss_tape_unmount(INT channel)
INT ss_tape_write_eof(INT channel)
bool ss_repair_utf8(char *string)
char * ss_crypt(const char *buf, const char *salt)
INT ss_tape_open(char *path, INT oflag, INT *channel)
void ss_printf(INT x, INT y, const char *format,...)
INT ss_directio_lock_port(INT start, INT end)
char * ss_gets(char *string, int size)
void * ss_ctrlc_handler(void(*func)(int))
INT ss_file_find(const char *path, const char *pattern, char **plist)
INT EXPRT cm_msg_early_init(void)
INT EXPRT cm_msg_facilities(STRING_LIST *list)
INT EXPRT cm_msg_open_buffer(void)
INT EXPRT cm_msg_close_buffer(void)
INT EXPRT cm_msg_register(EVENT_HANDLER *func)
INT EXPRT INT EXPRT INT EXPRT cm_msg_flush_buffer(void)
std::string cm_get_error(INT code)
INT EXPRT cm_msg_retrieve(INT n_message, char *message, INT buf_size)
INT EXPRT cm_msg_retrieve2(const char *facility, time_t t, int min_messages, char **messages, int *num_messages)
void EXPRT cm_msg_get_logfile(const char *facility, time_t t, std::string *filename, std::string *linkname, std::string *linktarget)
INT EXPRT cm_set_msg_print(INT system_mask, INT user_mask, int(*func)(const char *))
BOOL EXPRT equal_ustring(const char *str1, const char *str2)
INT db_find_key1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
INT db_sprintfh(char *string, const void *data, INT data_size, INT idx, DWORD type)
INT db_remove_open_record(HNDLE hDB, HNDLE hKey, BOOL lock)
INT db_get_data_index(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT idx, DWORD type)
INT db_delete_key(HNDLE hDB, HNDLE hKey, BOOL follow_links)
INT db_send_changed_records()
INT db_find_link(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
INT db_get_value(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, void *data, INT *buf_size, DWORD type, BOOL create)
INT db_reorder_key(HNDLE hDB, HNDLE hKey, INT idx)
static const KEY * db_get_parent(const DATABASE_HEADER *pheader, const KEY *pkey, int *pstatus, const char *caller, db_err_msg **msg)
INT db_save_json(HNDLE hDB, HNDLE hKey, const char *filename, int flags)
INT db_open_record(HNDLE hDB, HNDLE hKey, void *ptr, INT rec_size, WORD access_mode, void(*dispatcher)(INT, INT, void *), void *info)
INT db_open_database(const char *xdatabase_name, INT database_size, HNDLE *hDB, const char *client_name)
INT db_get_open_records(HNDLE hDB, HNDLE hKey, char *str, INT buf_size, BOOL fix)
INT db_paste_xml(HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
std::string strcomb1(const char **list)
INT db_save_xml(HNDLE hDB, HNDLE hKey, const char *filename)
INT db_set_link_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
INT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size)
INT db_get_record1(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align, const char *rec_str)
INT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT *buffer_size, const char *path)
INT db_set_link_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
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)
INT db_get_record_size(HNDLE hDB, HNDLE hKey, INT align, INT *buf_size)
INT db_get_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
INT db_create_key(HNDLE hDB, HNDLE hKey, const char *key_name, DWORD type)
INT db_check_record(HNDLE hDB, HNDLE hKey, const char *keyname, const char *rec_str, BOOL correct)
INT db_copy_json_save(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
INT db_copy_xml(HNDLE hDB, HNDLE hKey, char *buffer, int *buffer_size, bool header)
MJsonNode * db_scl(HNDLE hDB)
INT db_save_struct(HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append)
INT db_get_record(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align)
INT db_unwatch(HNDLE hDB, HNDLE hKey)
INT db_set_mode(HNDLE hDB, HNDLE hKey, WORD mode, BOOL recurse)
INT db_get_next_link(HNDLE hDB, HNDLE hKey, HNDLE *subkey_handle)
INT db_scan_tree_link(HNDLE hDB, HNDLE hKey, INT level, void(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
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)
INT db_scan_tree(HNDLE hDB, HNDLE hKey, INT level, INT(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
INT db_get_key(HNDLE hDB, HNDLE hKey, KEY *key)
INT db_get_link(HNDLE hDB, HNDLE hKey, KEY *key)
INT db_load(HNDLE hDB, HNDLE hKeyRoot, const char *filename, BOOL bRemote)
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)
INT db_sprintff(char *string, const char *format, const void *data, INT data_size, INT idx, DWORD type)
INT db_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
INT db_set_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
INT db_find_keys(HNDLE hDB, HNDLE hKeyRoot, char *odbpath, std::vector< HNDLE > &hKeyVector)
INT db_save_string(HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append)
INT db_copy_json_index(HNDLE hDB, HNDLE hKey, int index, char **buffer, int *buffer_size, int *buffer_end)
INT db_paste(HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
INT db_get_key_info(HNDLE hDB, HNDLE hKey, char *name, INT name_size, INT *type, INT *num_values, INT *item_size)
INT db_close_all_databases(void)
INT db_set_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
INT db_enum_link(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
INT db_copy_json_ls(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
char * strcomb(const char **list)
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)
INT db_sprintf(char *string, const void *data, INT data_size, INT idx, DWORD type)
INT db_update_last_activity(DWORD millitime)
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)
void EXPRT strarrayindex(char *odbpath, int *index1, int *index2)
INT db_set_data1(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
INT db_get_data1(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type, INT *num_values)
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)
INT db_set_value(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const void *data, INT data_size, INT num_values, DWORD type)
INT db_find_key(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
INT db_find_link1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
INT db_copy_json_array(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
MJsonNode * db_sor(HNDLE hDB, const char *root_path)
INT db_get_link_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
INT db_rename_key(HNDLE hDB, HNDLE hKey, const char *name)
BOOL EXPRT ends_with_ustring(const char *str, const char *suffix)
void json_write(char **buffer, int *buffer_size, int *buffer_end, int level, const char *s, int quoted)
INT EXPRT db_paste_json(HNDLE hDB, HNDLE hKey, const char *buffer)
INT db_get_key_time(HNDLE hDB, HNDLE hKey, DWORD *delta)
int db_delete_client_info(HNDLE hDB, int pid)
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)
INT db_notify_clients_array(HNDLE hDB, HNDLE hKeys[], INT size)
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)
INT db_merge_data(HNDLE hDB, HNDLE hKeyRoot, const char *name, void *data, INT data_size, INT num_values, INT type)
INT db_set_record(HNDLE hDB, HNDLE hKey, void *data, INT buf_size, INT align)
INT db_set_data_index1(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type, BOOL bNotify)
INT db_enum_key(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
INT EXPRT db_resize_string(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, int num_values, int max_string_length)
INT db_close_record(HNDLE hDB, HNDLE hKey)
INT db_create_record(HNDLE hDB, HNDLE hKey, const char *orig_key_name, const char *init_str)
INT db_sscanf(const char *data_str, void *data, INT *data_size, INT i, DWORD tid)
INT db_add_open_record(HNDLE hDB, HNDLE hKey, WORD access_mode)
INT EXPRT db_set_value_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string *s)
INT db_set_num_values(HNDLE hDB, HNDLE hKey, INT num_values)
INT db_get_record2(HNDLE hDB, HNDLE hKey, void *data, INT *xbuf_size, INT align, const char *rec_str, BOOL correct)
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)
INT db_close_database(HNDLE hDB)
INT db_protect_database(HNDLE hDB)
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)
void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags)
INT EXPRT rpc_client_connect(const char *host_name, INT midas_port, const char *client_name, HNDLE *hConnection)
INT EXPRT rpc_register_server(int port, int *plsock, int *pport)
INT EXPRT rpc_client_disconnect(HNDLE hConn, BOOL bShutdown)
INT EXPRT rpc_client_call(HNDLE hConn, DWORD routine_id,...)
INT EXPRT rpc_register_functions(const RPC_LIST *new_list, RPC_HANDLER func)
INT EXPRT rpc_set_timeout(HNDLE hConn, int timeout_msec, int *old_timeout_msec=NULL)
INT EXPRT rpc_server_connect(const char *host_name, const char *exp_name)
std::string rpc_get_name()
bool EXPRT rpc_is_remote(void)
void EXPRT rpc_debug_printf(const char *format,...)
const char EXPRT * rpc_tid_name_old(INT id)
INT EXPRT cm_query_transition(int *transition, int *run_number, int *trans_time)
INT EXPRT rpc_server_loop(void)
INT EXPRT rpc_clear_allowed_hosts(void)
std::string rpc_get_mserver_hostname()
INT EXPRT rpc_get_hw_type()
bool EXPRT rpc_is_connected(void)
INT EXPRT rpc_call(DWORD routine_id,...)
const char EXPRT * rpc_tid_name(INT id)
INT EXPRT rpc_flush_event(void)
INT EXPRT rpc_register_client(const char *name, RPC_LIST *list)
INT EXPRT rpc_server_shutdown(void)
INT EXPRT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode)
INT EXPRT rpc_get_timeout(HNDLE hConn)
INT EXPRT rpc_set_debug(void(*func)(const char *), INT mode)
INT EXPRT rpc_name_tid(const char *name)
bool EXPRT rpc_is_mserver(void)
INT EXPRT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event)
INT EXPRT rpc_send_event_sg(INT buffer_handle, int sg_n, const char *const sg_ptr[], const size_t sg_len[])
INT EXPRT rpc_set_name(const char *name)
INT rpc_get_convert_flags(void)
INT EXPRT rpc_tid_size(INT id)
INT EXPRT rpc_check_allowed_host(const char *hostname)
void EXPRT rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags)
char exp_name[NAME_LENGTH]
INT bor(INT run_number, char *error)
INT eor(INT run_number, char *error)
char host_name[HOST_NAME_LENGTH]
char buffer_name[NAME_LENGTH]
const char * frontend_file_name
The frontend file name, don't change it.
const char * frontend_name
The frontend name (client name) as seen by other MIDAS clients.
INT EXPRT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format,...) MATTRPRINTF(5
bool EXPRT ends_with_char(const std::string &s, char c)
INT EXPRT bm_get_buffer_level(INT buffer_handle, INT *n_bytes)
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)
INT EXPRT bm_get_buffer_info(INT buffer_handle, BUFFER_HEADER *buffer_header)
INT EXPRT bm_init_buffer_counters(INT buffer_handle)
void EXPRT open_subfolder(const char *name)
void EXPRT add_data_dir(char *result, char *file)
#define MATTRPRINTF(a, b)
std::string msprintf(const char *format,...) MATTRPRINTF(1
std::string EXPRT cm_transition_name(int transition)
unsigned long long UINT64
struct history_struct HISTORY
void * dbg_calloc(unsigned int size, unsigned int count, char *file, int line)
INT EXPRT rpc_register_function(INT id, RPC_HANDLER func)
INT device_driver(DEVICE_DRIVER *device_driver, INT cmd,...)
#define MAX_EVENT_REQUESTS
void dbg_free(void *adr, char *file, int line)
struct eqpmnt * PEQUIPMENT
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
std::vector< std::string > STRING_LIST
void * dbg_malloc(unsigned int size, char *file, int line)
int EXPRT cm_write_event_to_odb(HNDLE hDB, HNDLE hKey, const EVENT_HEADER *pevent, INT format)
void EXPRT lock_histo(INT id)
void EXPRT test_register(ANA_TEST *t)
#define message(type, str)
struct callback_addr callback
TH1X EXPRT * h1_book(const char *name, const char *title, int bins, double min, double max)
BOOL write_system_message
DWORD system_message_last
INT system_message_interval
DWORD trigger_count_required
std::timed_mutex buffer_mutex
std::timed_mutex read_cache_mutex
char client_name[NAME_LENGTH]
std::timed_mutex write_cache_mutex
int client_count_write_wait[MAX_CLIENTS]
BUFFER_HEADER * buffer_header
std::atomic< size_t > read_cache_size
std::atomic< size_t > write_cache_size
char buffer_name[NAME_LENGTH]
std::atomic_bool attached
DWORD client_time_write_wait[MAX_CLIENTS]
std::string * pequipment_name
EQUIPMENT_INFO * pequipment
INT transition_in_progress
INT(* cd)(INT cmd, PEQUIPMENT)
INT(* readout)(char *, INT)
static te_expr * list(state *s)