MIDAS
Loading...
Searching...
No Matches
midas.h File Reference
#include <mutex>
#include <atomic>
#include <vector>
#include <string>
Include dependency graph for midas.h:

Go to the source code of this file.

Classes

struct  EVENT_HEADER
 
struct  EVENT_REQUEST
 
struct  BUFFER_CLIENT
 
struct  BUFFER_HEADER
 
struct  BUFFER
 
struct  KEY
 
struct  KEYLIST
 
struct  BUS_DRIVER
 
struct  DD_MT_CHANNEL
 
struct  DD_MT_BUFFER
 
struct  EQUIPMENT_INFO
 
struct  EQUIPMENT_STATS
 
struct  DEVICE_DRIVER
 
struct  eqpmnt
 
struct  BANK_HEADER
 
struct  BANK
 
struct  BANK32
 
struct  BANK32A
 
struct  TAG
 
struct  BANK_LIST
 
struct  ANA_MODULE
 
struct  AR_INFO
 
struct  AR_STATS
 
struct  ANALYZE_REQUEST
 
struct  ANA_OUTPUT_INFO
 
struct  ANA_TEST
 
struct  HIST_RECORD
 
struct  DEF_RECORD
 
struct  INDEX_RECORD
 
struct  history_struct
 
struct  RUNINFO
 
struct  PROGRAM_INFO
 
struct  ALARM_CLASS
 
struct  ALARM
 
struct  RPC_PARAM
 
struct  RPC_LIST
 

Macros

#define DATABASE_VERSION   3
 
#define MIDAS_VERSION   "2.1"
 
#define MIDAS_TYPE_DEFINED
 
#define POINTER_T   int
 
#define PTYPE   POINTER_T
 
#define TRUE   1
 
#define FALSE   0
 
#define DIR_SEPARATOR   '/'
 
#define DIR_SEPARATOR_STR   "/"
 
#define INLINE
 
#define O_LARGEFILE   0
 
#define MATTRPRINTF(a, b)
 
#define MUTEX_T_DEFINED
 
#define DEFAULT_MAX_EVENT_SIZE   (4*1024*1024)
 
#define DEFAULT_BUFFER_SIZE   (32*1024*1024)
 
#define MIN_WRITE_CACHE_SIZE   (10000000)
 
#define MAX_WRITE_CACHE_SIZE_DIV   (3)
 
#define MAX_WRITE_CACHE_EVENT_SIZE_DIV   (10)
 
#define TAPE_BUFFER_SIZE   0x8000
 
#define NET_TCP_SIZE   0xFFFF
 
#define OPT_TCP_SIZE   8192
 
#define EVENT_BUFFER_NAME   "SYSTEM"
 
#define DEFAULT_ODB_SIZE   0x100000
 
#define NAME_LENGTH   32
 
#define HOST_NAME_LENGTH   256
 
#define MAX_CLIENTS   64
 
#define MAX_EVENT_REQUESTS   10
 
#define MAX_OPEN_RECORDS   256
 
#define MAX_ODB_PATH   256
 
#define BANKLIST_MAX   4096
 
#define STRING_BANKLIST_MAX   BANKLIST_MAX * 4
 
#define TRANSITION_ERROR_STRING_LENGTH   256
 
#define MIDAS_TCP_PORT   1175 /* port under which server is listening */
 
#define DEFAULT_RPC_TIMEOUT   10000
 
#define WATCHDOG_INTERVAL   1000
 
#define DEFAULT_WATCHDOG_TIMEOUT   10000
 
#define USE_HIDDEN_EQ
 
#define STATE_STOPPED   1
 
#define STATE_PAUSED   2
 
#define STATE_RUNNING   3
 
#define FORMAT_MIDAS   1
 
#define FORMAT_FIXED   4
 
#define FORMAT_ROOT   7
 
#define GET_ALL   (1<<0)
 
#define GET_NONBLOCKING   (1<<1
 
#define GET_RECENT   (1<<2)
 
#define TID_BYTE   1
 
#define TID_UINT8   1
 
#define TID_SBYTE   2
 
#define TID_INT8   2
 
#define TID_CHAR   3
 
#define TID_WORD   4
 
#define TID_UINT16   4
 
#define TID_SHORT   5
 
#define TID_INT16   5
 
#define TID_DWORD   6
 
#define TID_UINT32   6
 
#define TID_INT   7
 
#define TID_INT32   7
 
#define TID_BOOL   8
 
#define TID_FLOAT   9
 
#define TID_FLOAT32   9
 
#define TID_DOUBLE   10
 
#define TID_FLOAT64   10
 
#define TID_BITFIELD   11
 
#define TID_STRING   12
 
#define TID_ARRAY   13
 
#define TID_STRUCT   14
 
#define TID_KEY   15
 
#define TID_LINK   16
 
#define TID_INT64   17
 
#define TID_UINT64   18
 
#define TID_QWORD   18
 
#define TID_LAST   19
 
#define TR_SYNC   1
 
#define TR_ASYNC   2
 
#define TR_DETACH   4
 
#define TR_MTHREAD   8
 
#define BM_WAIT   0
 
#define BM_NO_WAIT   1
 
#define MODE_READ   (1<<0)
 
#define MODE_WRITE   (1<<1)
 
#define MODE_DELETE   (1<<2)
 
#define MODE_EXCLUSIVE   (1<<3)
 
#define MODE_ALLOC   (1<<6)
 
#define MODE_WATCH   (1<<7)
 
#define RPC_HNDLE_MSERVER   -1
 
#define RPC_HNDLE_CONNECT   -2
 
#define RPC_NO_REPLY   0x80000000l
 
#define WF_WATCH_ME   (1<<0) /* see cm_set_watchdog_flags */
 
#define WF_CALL_WD   (1<<1)
 
#define TR_START   (1<<0)
 
#define TR_STOP   (1<<1)
 
#define TR_PAUSE   (1<<2)
 
#define TR_RESUME   (1<<3)
 
#define TR_STARTABORT   (1<<4)
 
#define TR_DEFERRED   (1<<12)
 
#define EQ_PERIODIC   (1<<0)
 
#define EQ_POLLED   (1<<1)
 
#define EQ_INTERRUPT   (1<<2)
 
#define EQ_MULTITHREAD   (1<<3)
 
#define EQ_SLOW   (1<<4)
 
#define EQ_MANUAL_TRIG   (1<<5)
 
#define EQ_FRAGMENTED   (1<<6)
 
#define EQ_EB   (1<<7)
 
#define EQ_USER   (1<<8)
 
#define RO_RUNNING   (1<<0)
 
#define RO_STOPPED   (1<<1)
 
#define RO_PAUSED   (1<<2)
 
#define RO_BOR   (1<<3)
 
#define RO_EOR   (1<<4)
 
#define RO_PAUSE   (1<<5)
 
#define RO_RESUME   (1<<6)
 
#define RO_TRANSITIONS   (RO_BOR|RO_EOR|RO_PAUSE|RO_RESUME)
 
#define RO_NONTRANS   (RO_RUNNING|RO_STOPPED|RO_PAUSED)
 
#define RO_ALWAYS   (0xFF)
 
#define RO_ODB   (1<<8)
 
#define CH_BS   8
 
#define CH_TAB   9
 
#define CH_LF   10
 
#define CH_CR   13
 
#define CH_EXT   0x100
 
#define CH_HOME   (CH_EXT+0)
 
#define CH_INSERT   (CH_EXT+1)
 
#define CH_DELETE   (CH_EXT+2)
 
#define CH_END   (CH_EXT+3)
 
#define CH_PUP   (CH_EXT+4)
 
#define CH_PDOWN   (CH_EXT+5)
 
#define CH_UP   (CH_EXT+6)
 
#define CH_DOWN   (CH_EXT+7)
 
#define CH_RIGHT   (CH_EXT+8)
 
#define CH_LEFT   (CH_EXT+9)
 
#define LAM_SOURCE(c, s)   (c<<24 | ((s) & 0xFFFFFF))
 
#define LAM_STATION(s)   (1<<(s-1))
 
#define LAM_SOURCE_CRATE(c)   (c>>24)
 
#define LAM_SOURCE_STATION(s)   ((s) & 0xFFFFFF)
 
#define CNAF   0x1 /* normal read/write */
 
#define CNAF_nQ   0x2 /* Repeat read until noQ */
 
#define CNAF_INHIBIT_SET   0x100
 
#define CNAF_INHIBIT_CLEAR   0x101
 
#define CNAF_CRATE_CLEAR   0x102
 
#define CNAF_CRATE_ZINIT   0x103
 
#define CNAF_TEST   0x110
 
#define MAX(a, b)   (((a)>(b))?(a):(b))
 
#define MIN(a, b)   (((a)<(b))?(a):(b))
 
#define ALIGN8(x)   (((x)+7) & ~7)
 
#define VALIGN(adr, align)   (((POINTER_T) (adr)+(align)-1) & ~((align)-1))
 
#define EVENTID_ALL   -1 /* any event id */
 
#define TRIGGER_ALL   -1 /* any type of trigger */
 
#define MT_ERROR   (1<<0)
 
#define MT_INFO   (1<<1)
 
#define MT_DEBUG   (1<<2)
 
#define MT_USER   (1<<3)
 
#define MT_LOG   (1<<4)
 
#define MT_TALK   (1<<5)
 
#define MT_CALL   (1<<6)
 
#define MT_ALL   0xFF
 
#define MT_ERROR_STR   "ERROR"
 
#define MT_INFO_STR   "INFO"
 
#define MT_DEBUG_STR   "DEBUG"
 
#define MT_USER_STR   "USER"
 
#define MT_LOG_STR   "LOG"
 
#define MT_TALK_STR   "TALK"
 
#define MT_CALL_STR   "CALL"
 
#define MERROR   MT_ERROR, __FILE__, __LINE__
 
#define MINFO   MT_INFO, __FILE__, __LINE__
 
#define MDEBUG   MT_DEBUG, __FILE__, __LINE__
 
#define MUSER   MT_USER, __FILE__, __LINE__
 
#define MLOG   MT_LOG, __FILE__, __LINE__
 
#define MTALK   MT_TALK, __FILE__, __LINE__
 
#define MCALL   MT_CALL, __FILE__, __LINE__
 
#define SUCCESS   1
 
#define CM_SUCCESS   1
 
#define CM_SET_ERROR   102
 
#define CM_NO_CLIENT   103
 
#define CM_DB_ERROR   104
 
#define CM_UNDEF_EXP   105
 
#define CM_VERSION_MISMATCH   106
 
#define CM_SHUTDOWN   107
 
#define CM_WRONG_PASSWORD   108
 
#define CM_UNDEF_ENVIRON   109
 
#define CM_DEFERRED_TRANSITION   110
 
#define CM_TRANSITION_IN_PROGRESS   111
 
#define CM_TIMEOUT   112
 
#define CM_INVALID_TRANSITION   113
 
#define CM_TOO_MANY_REQUESTS   114
 
#define CM_TRUNCATED   115
 
#define CM_TRANSITION_CANCELED   116
 
#define BM_SUCCESS   1
 
#define BM_CREATED   202
 
#define BM_NO_MEMORY   203
 
#define BM_INVALID_NAME   204
 
#define BM_INVALID_HANDLE   205
 
#define BM_NO_SLOT   206
 
#define BM_NO_SEMAPHORE   207
 
#define BM_NOT_FOUND   208
 
#define BM_ASYNC_RETURN   209
 
#define BM_TRUNCATED   210
 
#define BM_MULTIPLE_HOSTS   211
 
#define BM_MEMSIZE_MISMATCH   212
 
#define BM_CONFLICT   213
 
#define BM_EXIT   214
 
#define BM_INVALID_PARAM   215
 
#define BM_MORE_EVENTS   216
 
#define BM_INVALID_MIXING   217
 
#define BM_NO_SHM   218
 
#define BM_CORRUPTED   219
 
#define BM_INVALID_SIZE   220
 
#define BM_TIMEOUT   221
 
#define DB_SUCCESS   1
 
#define DB_CREATED   302
 
#define DB_NO_MEMORY   303
 
#define DB_INVALID_NAME   304
 
#define DB_INVALID_HANDLE   305
 
#define DB_NO_SLOT   306
 
#define DB_NO_SEMAPHORE   307
 
#define DB_MEMSIZE_MISMATCH   308
 
#define DB_INVALID_PARAM   309
 
#define DB_FULL   310
 
#define DB_KEY_EXIST   311
 
#define DB_NO_KEY   312
 
#define DB_KEY_CREATED   313
 
#define DB_TRUNCATED   314
 
#define DB_TYPE_MISMATCH   315
 
#define DB_NO_MORE_SUBKEYS   316
 
#define DB_FILE_ERROR   317
 
#define DB_NO_ACCESS   318
 
#define DB_STRUCT_SIZE_MISMATCH   319
 
#define DB_OPEN_RECORD   320
 
#define DB_OUT_OF_RANGE   321
 
#define DB_INVALID_LINK   322
 
#define DB_CORRUPTED   323
 
#define DB_STRUCT_MISMATCH   324
 
#define DB_TIMEOUT   325
 
#define DB_VERSION_MISMATCH   326
 
#define SS_SUCCESS   1
 
#define SS_CREATED   402
 
#define SS_NO_MEMORY   403
 
#define SS_INVALID_NAME   404
 
#define SS_INVALID_HANDLE   405
 
#define SS_INVALID_ADDRESS   406
 
#define SS_FILE_ERROR   407
 
#define SS_NO_SEMAPHORE   408
 
#define SS_NO_PROCESS   409
 
#define SS_NO_THREAD   410
 
#define SS_SOCKET_ERROR   411
 
#define SS_TIMEOUT   412
 
#define SS_SERVER_RECV   413
 
#define SS_CLIENT_RECV   414
 
#define SS_ABORT   415
 
#define SS_EXIT   416
 
#define SS_NO_TAPE   417
 
#define SS_DEV_BUSY   418
 
#define SS_IO_ERROR   419
 
#define SS_TAPE_ERROR   420
 
#define SS_NO_DRIVER   421
 
#define SS_END_OF_TAPE   422
 
#define SS_END_OF_FILE   423
 
#define SS_FILE_EXISTS   424
 
#define SS_NO_SPACE   425
 
#define SS_INVALID_FORMAT   426
 
#define SS_NO_ROOT   427
 
#define SS_SIZE_MISMATCH   428
 
#define SS_NO_MUTEX   429
 
#define RPC_SUCCESS   1
 
#define RPC_ABORT   SS_ABORT
 
#define RPC_NO_CONNECTION   502
 
#define RPC_NET_ERROR   503
 
#define RPC_TIMEOUT   504
 
#define RPC_EXCEED_BUFFER   505
 
#define RPC_NOT_REGISTERED   506
 
#define RPC_CONNCLOSED   507
 
#define RPC_INVALID_ID   508
 
#define RPC_SHUTDOWN   509
 
#define RPC_NO_MEMORY   510
 
#define RPC_DOUBLE_DEFINED   511
 
#define RPC_MUTEX_TIMEOUT   512
 
#define FE_SUCCESS   1
 
#define FE_ERR_ODB   602
 
#define FE_ERR_HW   603
 
#define FE_ERR_DISABLED   604
 
#define FE_ERR_DRIVER   605
 
#define FE_PARTIALLY_DISABLED   606
 
#define FE_NOT_YET_READ   607
 
#define HS_SUCCESS   1
 
#define HS_FILE_ERROR   702
 
#define HS_NO_MEMORY   703
 
#define HS_TRUNCATED   704
 
#define HS_WRONG_INDEX   705
 
#define HS_UNDEFINED_EVENT   706
 
#define HS_UNDEFINED_VAR   707
 
#define FTP_SUCCESS   1
 
#define FTP_NET_ERROR   802
 
#define FTP_FILE_ERROR   803
 
#define FTP_RESPONSE_ERROR   804
 
#define FTP_INVALID_ARG   805
 
#define EL_SUCCESS   1
 
#define EL_FILE_ERROR   902
 
#define EL_NO_MESSAGE   903
 
#define EL_TRUNCATED   904
 
#define EL_FIRST_MSG   905
 
#define EL_LAST_MSG   906
 
#define AL_SUCCESS   1
 
#define AL_INVALID_NAME   1002
 
#define AL_ERROR_ODB   1003
 
#define AL_RESET   1004
 
#define AL_TRIGGERED   1005
 
#define CMD_INIT   1 /* misc. commands must be below 20 !! */
 
#define CMD_EXIT   2
 
#define CMD_START   3
 
#define CMD_STOP   4
 
#define CMD_IDLE   5
 
#define CMD_GET_THRESHOLD   6
 
#define CMD_GET_THRESHOLD_CURRENT   7
 
#define CMD_GET_THRESHOLD_ZERO   8
 
#define CMD_SET_LABEL   9
 
#define CMD_GET_LABEL   10
 
#define CMD_OPEN   11
 
#define CMD_CLOSE   12
 
#define CMD_MISC_LAST   12 /* update this if you add new commands */
 
#define CMD_SET_FIRST   CMD_MISC_LAST+1 /* set commands */
 
#define CMD_SET   CMD_SET_FIRST
 
#define CMD_SET_VOLTAGE_LIMIT   CMD_SET_FIRST+1
 
#define CMD_SET_CURRENT_LIMIT   CMD_SET_FIRST+2
 
#define CMD_SET_RAMPUP   CMD_SET_FIRST+3
 
#define CMD_SET_RAMPDOWN   CMD_SET_FIRST+4
 
#define CMD_SET_TRIP_TIME   CMD_SET_FIRST+5
 
#define CMD_SET_CHSTATE   CMD_SET_FIRST+6
 
#define CMD_SET_LAST   CMD_SET_FIRST+6 /* update this if you add new commands */
 
#define CMD_GET_FIRST   CMD_SET_LAST+1 /* multithreaded get commands */
 
#define CMD_GET   CMD_GET_FIRST
 
#define CMD_GET_CURRENT   CMD_GET_FIRST+1
 
#define CMD_GET_TRIP   CMD_GET_FIRST+2
 
#define CMD_GET_STATUS   CMD_GET_FIRST+3
 
#define CMD_GET_TEMPERATURE   CMD_GET_FIRST+4
 
#define CMD_GET_DEMAND   CMD_GET_FIRST+5
 
#define CMD_GET_LAST   CMD_GET_FIRST+5 /* update this if you add new commands ! */
 
#define CMD_GET_DIRECT   CMD_GET_LAST+1 /* direct get commands */
 
#define CMD_GET_VOLTAGE_LIMIT   CMD_GET_DIRECT
 
#define CMD_GET_CURRENT_LIMIT   CMD_GET_DIRECT+2
 
#define CMD_GET_RAMPUP   CMD_GET_DIRECT+3
 
#define CMD_GET_RAMPDOWN   CMD_GET_DIRECT+4
 
#define CMD_GET_TRIP_TIME   CMD_GET_DIRECT+5
 
#define CMD_GET_CHSTATE   CMD_GET_DIRECT+6
 
#define CMD_GET_CRATEMAP   CMD_GET_DIRECT+7
 
#define CMD_GET_DEMAND_DIRECT   CMD_GET_DIRECT+8
 
#define CMD_GET_DIRECT_LAST   CMD_GET_DIRECT+8 /* update this if you add new commands ! */
 
#define CMD_ENABLE_COMMAND   (1<<14) /* these two commands can be used to enable/disable */
 
#define CMD_DISABLE_COMMAND   (1<<15) /* one of the other commands */
 
#define CMD_WRITE   100
 
#define CMD_READ   101
 
#define CMD_PUTS   102
 
#define CMD_GETS   103
 
#define CMD_DEBUG   104
 
#define CMD_NAME   105
 
#define CMD_INTERRUPT_ENABLE   100
 
#define CMD_INTERRUPT_DISABLE   101
 
#define CMD_INTERRUPT_ATTACH   102
 
#define CMD_INTERRUPT_DETACH   103
 
#define BD_GETS(s, z, p, t)   info->bd(CMD_GETS, info->bd_info, s, z, p, t)
 
#define BD_READS(s, z, t)   info->bd(CMD_READ, info->bd_info, s, z, t)
 
#define BD_PUTS(s)   info->bd(CMD_PUTS, info->bd_info, s)
 
#define BD_WRITES(s)   info->bd(CMD_WRITE, info->bd_info, s)
 
#define ANA_CONTINUE   1
 
#define ANA_SKIP   0
 
#define TRIGGER_MASK(e)   ((((EVENT_HEADER *) e)-1)->trigger_mask)
 
#define EVENT_ID(e)   ((((EVENT_HEADER *) e)-1)->event_id)
 
#define SERIAL_NUMBER(e)   ((((EVENT_HEADER *) e)-1)->serial_number)
 
#define TIME_STAMP(e)   ((((EVENT_HEADER *) e)-1)->time_stamp)
 
#define DATA_SIZE(e)   ((((EVENT_HEADER *) e)-1)->data_size)
 
#define EVENT_SOURCE(e, o)   (* (INT*) (e+o))
 
#define EVENTID_BOR   ((short int) 0x8000)
 
#define EVENTID_EOR   ((short int) 0x8001)
 
#define EVENTID_MESSAGE   ((short int) 0x8002)
 
#define EVENTID_FRAG1   ((short int) 0xC000) /* first fragment */
 
#define EVENTID_FRAG   ((short int) 0xD000) /* added to real event-id */
 
#define MIDAS_MAGIC   0x494d
 
#define DF_INPUT   (1<<0)
 
#define DF_OUTPUT   (1<<1)
 
#define DF_PRIO_DEVICE   (1<<2)
 
#define DF_READ_ONLY   (1<<3)
 
#define DF_MULTITHREAD   (1<<4)
 
#define DF_HW_RAMP   (1<<5)
 
#define DF_LABELS_FROM_DEVICE   (1<<6)
 
#define DF_REPORT_TEMP   (1<<7)
 
#define DF_REPORT_STATUS   (1<<8)
 
#define DF_REPORT_CHSTATE   (1<<9)
 
#define DF_REPORT_CRATEMAP   (1<<10)
 
#define DF_QUICKSTART   (1<<11)
 
#define DF_POLL_DEMAND   (1<<12)
 
#define DF_PRIORITY_READ   (1<<13)
 
#define EQUIPMENT_COMMON_STR   "\Event ID = WORD : 0\n\Trigger mask = WORD : 0\n\Buffer = STRING : [32] SYSTEM\n\Type = INT : 0\n\Source = INT : 0\n\Format = STRING : [8] FIXED\n\Enabled = BOOL : 0\n\Read on = INT : 0\n\Period = INT : 0\n\Event limit = DOUBLE : 0\n\Num subevents = DWORD : 0\n\Log history = INT : 0\n\Frontend host = STRING : [32] \n\Frontend name = STRING : [32] \n\Frontend file name = STRING : [256] \n\Status = STRING : [256] \n\Status color = STRING : [32] \n\Hidden = BOOL : 0\n\"
 
#define EQUIPMENT_STATISTICS_STR   "\Events sent = DOUBLE : 0\n\Events per sec. = DOUBLE : 0\n\kBytes per sec. = DOUBLE : 0\n\"
 
#define BANK_FORMAT_VERSION   1
 
#define BANK_FORMAT_32BIT   (1<<4)
 
#define BANK_FORMAT_64BIT_ALIGNED   (1<<5)
 
#define ANA_OUTPUT_INFO_STR   "\Filename = STRING : [256] run%05d.asc\n\RWNT = BOOL : 0\n\Histo Dump = BOOL : 0\n\Histo Dump Filename = STRING : [256] his%05d.rz\n\Clear histos = BOOL : 1\n\Last Histo Filename = STRING : [256] last.rz\n\Events to ODB = BOOL : 1\n\Global Memory Name = STRING : [8] ONLN\n\"
 
#define SET_TEST(t, v)   { if (!t.registered) test_register(&t); t.value = (v); }
 
#define TEST(t)   (t.value)
 
#define DEF_TEST(t)   extern ANA_TEST t;
 
#define RT_DATA   (*((DWORD *) "HSDA"))
 
#define RT_DEF   (*((DWORD *) "HSDF"))
 
#define RUNINFO_STR(_name)
 
#define AT_INTERNAL   1
 
#define AT_PROGRAM   2
 
#define AT_EVALUATED   3
 
#define AT_PERIODIC   4
 
#define AT_LAST   4
 
#define M_MALLOC(x)   malloc(x)
 
#define M_CALLOC(x, y)   calloc(x,y)
 
#define M_FREE(x)   free(x)
 
#define PAWC_NAME   PAWC
 
#define PAWC_DEFINE(size)
 
#define RPC_IN   (1 << 0)
 
#define RPC_OUT   (1 << 1)
 
#define RPC_POINTER   (1 << 2)
 
#define RPC_FIXARRAY   (1 << 3)
 
#define RPC_VARARRAY   (1 << 4)
 
#define RPC_OUTGOING   (1 << 5)
 
#define RPC_CXX   (1 << 6)
 
#define MAX_RPC_PARAMS   20
 
#define RPC_MIN_ID   1
 
#define RPC_MAX_ID   9999
 
#define CF_ENDIAN   (1<<0)
 
#define CF_IEEE2VAX   (1<<1)
 
#define CF_VAX2IEEE   (1<<2)
 
#define CBYTE(_i)   (* ((BYTE *) prpc_param[_i]))
 
#define CPBYTE(_i)   ( ((BYTE *) prpc_param[_i]))
 
#define CSHORT(_i)   (* ((short *) prpc_param[_i]))
 
#define CPSHORT(_i)   ( ((short *) prpc_param[_i]))
 
#define CINT(_i)   (* ((INT *) prpc_param[_i]))
 
#define CPINT(_i)   ( ((INT *) prpc_param[_i]))
 
#define CWORD(_i)   (* ((WORD *) prpc_param[_i]))
 
#define CPWORD(_i)   ( ((WORD *) prpc_param[_i]))
 
#define CLONG(_i)   (* ((long *) prpc_param[_i]))
 
#define CPLONG(_i)   ( ((long *) prpc_param[_i]))
 
#define CDWORD(_i)   (* ((DWORD *) prpc_param[_i]))
 
#define CPDWORD(_i)   ( ((DWORD *) prpc_param[_i]))
 
#define CHNDLE(_i)   (* ((HNDLE *) prpc_param[_i]))
 
#define CPHNDLE(_i)   ( ((HNDLE *) prpc_param[_i]))
 
#define CBOOL(_i)   (* ((BOOL *) prpc_param[_i]))
 
#define CPBOOL(_i)   ( ((BOOL *) prpc_param[_i]))
 
#define CFLOAT(_i)   (* ((float *) prpc_param[_i]))
 
#define CPFLOAT(_i)   ( ((float *) prpc_param[_i]))
 
#define CDOUBLE(_i)   (* ((double *) prpc_param[_i]))
 
#define CPDOUBLE(_i)   ( ((double *) prpc_param[_i]))
 
#define CSTRING(_i)   ( ((char *) prpc_param[_i]))
 
#define CARRAY(_i)   ( ((void *) prpc_param[_i]))
 
#define CBYTE(_i)   (* ((BYTE *) prpc_param[_i]))
 
#define CPBYTE(_i)   ( ((BYTE *) prpc_param[_i]))
 
#define CSHORT(_i)   (* ((short *) prpc_param[_i]))
 
#define CPSHORT(_i)   ( ((short *) prpc_param[_i]))
 
#define CINT(_i)   (* ((INT *) prpc_param[_i]))
 
#define CPINT(_i)   ( ((INT *) prpc_param[_i]))
 
#define CWORD(_i)   (* ((WORD *) prpc_param[_i]))
 
#define CPWORD(_i)   ( ((WORD *) prpc_param[_i]))
 
#define CLONG(_i)   (* ((long *) prpc_param[_i]))
 
#define CPLONG(_i)   ( ((long *) prpc_param[_i]))
 
#define CDWORD(_i)   (* ((DWORD *) prpc_param[_i]))
 
#define CPDWORD(_i)   ( ((DWORD *) prpc_param[_i]))
 
#define CHNDLE(_i)   (* ((HNDLE *) prpc_param[_i]))
 
#define CPHNDLE(_i)   ( ((HNDLE *) prpc_param[_i]))
 
#define CBOOL(_i)   (* ((BOOL *) prpc_param[_i]))
 
#define CPBOOL(_i)   ( ((BOOL *) prpc_param[_i]))
 
#define CFLOAT(_i)   (* ((float *) prpc_param[_i]))
 
#define CPFLOAT(_i)   ( ((float *) prpc_param[_i]))
 
#define CDOUBLE(_i)   (* ((double *) prpc_param[_i]))
 
#define CPDOUBLE(_i)   ( ((double *) prpc_param[_i]))
 
#define CSTRING(_i)   ( ((char *) prpc_param[_i]))
 
#define CARRAY(_i)   ( ((void *) prpc_param[_i]))
 
#define CSTDSTRING(_i)   (* ((std::string*) prpc_param[_i]))
 
#define CSTDVECTOR(_i)   (*((std::vector<char>*) prpc_param[_i]))
 
#define CPSTDSTRING(_i)   ( ((std::string*) prpc_param[_i]))
 
#define CPSTDVECTOR(_i)   (((std::vector<char>*) prpc_param[_i]))
 
#define cBYTE   (* ((BYTE *) prpc_param[--n_param]))
 
#define cPBYTE   ( ((BYTE *) prpc_param[--n_param]))
 
#define cSHORT   (* ((short *) prpc_param[--n_param]))
 
#define cPSHORT   ( ((short *) prpc_param[--n_param]))
 
#define cINT   (* ((INT *) prpc_param[--n_param]))
 
#define cPINT   ( ((INT *) prpc_param[--n_param]))
 
#define cWORD   (* ((WORD *) prpc_param[--n_param]))
 
#define cPWORD   ( ((WORD *) prpc_param[--n_param]))
 
#define cLONG   (* ((long *) prpc_param[--n_param]))
 
#define cPLONG   ( ((long *) prpc_param[--n_param]))
 
#define cDWORD   (* ((DWORD *) prpc_param[--n_param]))
 
#define cPDWORD   ( ((DWORD *) prpc_param[--n_param]))
 
#define cHNDLE   (* ((HNDLE *) prpc_param[--n_param]))
 
#define cPHNDLE   ( ((HNDLE *) prpc_param[--n_param]))
 
#define cBOOL   (* ((BOOL *) prpc_param[--n_param]))
 
#define cPBOOL   ( ((BOOL *) prpc_param[--n_param]))
 
#define cFLOAT   (* ((float *) prpc_param[--n_param]))
 
#define cPFLOAT   ( ((float *) prpc_param[--n_param]))
 
#define cDOUBLE   (* ((double *) prpc_param[--n_param]))
 
#define cPDOUBLE   ( ((double *) prpc_param[--n_param]))
 
#define cSTRING   ( ((char *) prpc_param[--n_param]))
 
#define cARRAY   ( ((void *) prpc_param[--n_param]))
 
#define JS_LEVEL_0   0
 
#define JS_LEVEL_1   1
 
#define JS_MUST_BE_SUBDIR   1
 
#define JSFLAG_SAVE_KEYS   (1<<1)
 
#define JSFLAG_FOLLOW_LINKS   (1<<2)
 
#define JSFLAG_RECURSE   (1<<3)
 
#define JSFLAG_LOWERCASE   (1<<4)
 
#define JSFLAG_OMIT_NAMES   (1<<5)
 
#define JSFLAG_OMIT_LAST_WRITTEN   (1<<6)
 
#define JSFLAG_OMIT_OLD   (1<<7)
 
#define EXPRT
 
#define HAVE_CM_GET_CLIENT_NAME   1
 
#define HAVE_CM_PERIODIC_TASKS   1
 
#define HAVE_BM_SEND_EVENT_VEC   1
 
#define HAVE_BM_RECEIVE_EVENT_VEC   1
 
#define HAVE_BM_RECEIVE_EVENT_ALLOC   1
 
#define HAVE_DB_GET_VALUE_STRING_CREATE_STRING_LENGTH   1
 

Typedefs

typedef unsigned char BYTE
 
typedef unsigned short int WORD
 
typedef unsigned int DWORD
 
typedef DWORD BOOL
 
typedef int INT
 
typedef INT HNDLE
 
typedef unsigned char UINT8
 
typedef char INT8
 
typedef unsigned short UINT16
 
typedef short INT16
 
typedef unsigned int UINT32
 
typedef int INT32
 
typedef unsigned long long UINT64
 
typedef long long INT64
 
typedef INT midas_thread_t
 
typedef INT MUTEX_T
 
typedef std::vector< std::string > STRING_LIST
 
typedef void() EVENT_HANDLER(HNDLE buffer_handler, HNDLE request_id, EVENT_HEADER *event_header, void *event_data)
 
typedef INT() RPC_HANDLER(INT index, void *prpc_param[])
 
typedef struct eqpmntPEQUIPMENT
 
typedef struct eqpmnt EQUIPMENT
 
typedef struct history_struct HISTORY
 

Functions

INT device_driver (DEVICE_DRIVER *device_driver, INT cmd,...)
 
void * dbg_malloc (unsigned int size, char *file, int line)
 
void * dbg_calloc (unsigned int size, unsigned int count, char *file, int line)
 
void dbg_free (void *adr, char *file, int line)
 
std::string cm_get_error (INT code)
 
const char *EXPRT cm_get_version (void)
 
const char *EXPRT cm_get_revision (void)
 
INT EXPRT cm_get_experiment_name (char *name, int name_size)
 
std::string cm_get_experiment_name ()
 
INT EXPRT cm_get_environment (char *host_name, int host_name_size, char *exp_name, int exp_name_size)
 
INT EXPRT cm_get_environment (std::string *host_name, std::string *exp_name)
 
INT EXPRT cm_list_experiments_local (STRING_LIST *exp_names)
 
INT EXPRT cm_list_experiments_remote (const char *host_name, STRING_LIST *exp_names)
 
INT EXPRT cm_get_exptab_filename (char *filename, int filename_size)
 
std::string cm_get_exptab_filename ()
 
INT EXPRT cm_get_exptab (const char *exp_name, char *expdir, int expdir_size, char *expuser, int expuser_size)
 
INT EXPRT cm_get_exptab (const char *exp_name, std::string *expdir, std::string *expuser)
 
INT EXPRT cm_select_experiment_local (std::string *exp_name)
 
INT EXPRT cm_select_experiment_remote (const char *host_name, std::string *exp_name)
 
INT EXPRT cm_set_experiment_local (const char *exp_name)
 
INT EXPRT cm_connect_experiment (const char *host_name, const char *exp_name, const char *client_name, void(*func)(char *))
 
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_disconnect_experiment (void)
 
INT EXPRT cm_register_transition (INT transition, INT(*func)(INT, char *), int sequence_number)
 
INT EXPRT cm_deregister_transition (INT transition)
 
INT EXPRT cm_set_transition_sequence (INT transition, INT sequence_number)
 
INT EXPRT cm_set_client_run_state (INT state)
 
INT EXPRT cm_query_transition (int *transition, int *run_number, int *trans_time)
 
INT EXPRT cm_register_deferred_transition (INT transition, BOOL(*func)(INT, BOOL))
 
INT EXPRT cm_check_deferred_transition (void)
 
INT EXPRT cm_transition (INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag)
 
INT EXPRT cm_transition_cleanup ()
 
std::string EXPRT cm_transition_name (int transition)
 
INT EXPRT cm_register_server (void)
 
INT EXPRT cm_register_function (INT id, INT(*func)(INT, void **))
 
INT EXPRT cm_connect_client (const char *client_name, HNDLE *hConn)
 
INT EXPRT cm_disconnect_client (HNDLE hConn, BOOL bShutdown)
 
INT EXPRT cm_set_experiment_database (HNDLE hDB, HNDLE hKeyClient)
 
INT EXPRT cm_get_experiment_database (HNDLE *hDB, HNDLE *hKeyClient)
 
INT EXPRT cm_set_experiment_semaphore (INT semaphore_alarm, INT semaphore_elog, INT semaphore_history, INT semaphore_msg)
 
INT EXPRT cm_get_experiment_semaphore (INT *semaphore_alarm, INT *semaphore_elog, INT *semaphore_history, INT *semaphore_msg)
 
INT EXPRT cm_set_client_info (HNDLE hDB, HNDLE *hKeyClient, const char *host_name, const char *client_name, INT computer_id, const char *password, DWORD watchdog_timeout)
 
std::string EXPRT cm_get_client_name ()
 
INT EXPRT cm_check_client (HNDLE hDB, HNDLE hKeyClient)
 
INT EXPRT cm_set_watchdog_params (BOOL call_watchdog, DWORD timeout)
 
INT EXPRT cm_get_watchdog_params (BOOL *call_watchdog, DWORD *timeout)
 
INT EXPRT cm_get_watchdog_info (HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
 
INT EXPRT cm_watchdog_thread (void *unused)
 
INT EXPRT cm_start_watchdog_thread (void)
 
INT EXPRT cm_stop_watchdog_thread (void)
 
INT EXPRT cm_shutdown (const char *name, BOOL bUnique)
 
INT EXPRT cm_shutdown (const char *name)
 
INT EXPRT cm_exist (const char *name, BOOL bClientName)
 
INT EXPRT cm_cleanup (const char *client_name, BOOL ignore_timeout)
 
INT EXPRT cm_yield (INT millisec)
 
INT EXPRT cm_periodic_tasks (void)
 
INT EXPRT cm_execute (const char *command, char *result, INT buf_size)
 
INT EXPRT cm_synchronize (DWORD *sec)
 
INT EXPRT cm_asctime (char *str, INT buf_size)
 
std::string EXPRT cm_asctime ()
 
INT EXPRT cm_time (DWORD *t)
 
BOOL EXPRT cm_is_ctrlc_pressed (void)
 
void EXPRT cm_ack_ctrlc_pressed (void)
 
INT EXPRT cm_exec_script (const char *odb_path_to_script)
 
int EXPRT cm_write_event_to_odb (HNDLE hDB, HNDLE hKey, const EVENT_HEADER *pevent, INT format)
 
INT EXPRT cm_set_msg_print (INT system_mask, INT user_mask, int(*func)(const char *))
 
INT EXPRT cm_msg (INT message_type, const char *filename, INT line, const char *routine, const char *format,...) MATTRPRINTF(5
 
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
 
INT EXPRT INT EXPRT INT EXPRT cm_msg_flush_buffer (void)
 
INT EXPRT cm_msg_register (EVENT_HANDLER *func)
 
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)
 
INT EXPRT cm_msg_facilities (STRING_LIST *list)
 
void EXPRT cm_msg_get_logfile (const char *facility, time_t t, std::string *filename, std::string *linkname, std::string *linktarget)
 
INT EXPRT cm_msg_open_buffer (void)
 
INT EXPRT cm_msg_close_buffer (void)
 
INT EXPRT cm_msg_early_init (void)
 
BOOL EXPRT equal_ustring (const char *str1, const char *str2)
 
BOOL EXPRT ends_with_ustring (const char *str, const char *suffix)
 
bool EXPRT ends_with_char (const std::string &s, char c)
 
BOOL EXPRT strmatch (char *pattern, char *str)
 
void EXPRT strarrayindex (char *odbpath, int *index1, int *index2)
 
std::string msprintf (const char *format,...) MATTRPRINTF(1
 
std::string std::string cm_expand_env (const char *str)
 
INT EXPRT bm_open_buffer (const char *buffer_name, INT buffer_size, INT *buffer_handle)
 
INT EXPRT bm_get_buffer_handle (const char *buffer_name, INT *buffer_handle)
 
INT EXPRT bm_close_buffer (INT buffer_handle)
 
INT EXPRT bm_close_all_buffers (void)
 
INT EXPRT bm_init_buffer_counters (INT buffer_handle)
 
INT EXPRT bm_get_buffer_info (INT buffer_handle, BUFFER_HEADER *buffer_header)
 
INT EXPRT bm_get_buffer_level (INT buffer_handle, INT *n_bytes)
 
INT EXPRT bm_set_cache_size (INT buffer_handle, size_t read_size, size_t write_size)
 
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_compose_event_threadsafe (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_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_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_remove_event_request (INT buffer_handle, INT request_id)
 
INT EXPRT bm_delete_request (INT request_id)
 
INT EXPRT bm_send_event (INT buffer_handle, const EVENT_HEADER *event, int unused, int timeout_msec)
 
INT EXPRT bm_send_event_vec (INT buffer_handle, const std::vector< char > &event, int timeout_msec)
 
INT EXPRT bm_send_event_vec (INT buffer_handle, const std::vector< std::vector< char > > &event, int timeout_msec)
 
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_receive_event (INT buffer_handle, void *destination, INT *buf_size, int timeout_msec)
 
INT EXPRT bm_receive_event_vec (INT buffer_handle, std::vector< char > *event, int timeout_msec)
 
INT EXPRT bm_receive_event_alloc (INT buffer_handle, EVENT_HEADER **ppevent, int timeout_msec)
 
INT EXPRT bm_skip_event (INT buffer_handle)
 
INT EXPRT bm_flush_cache (INT buffer_handle, int timeout_msec)
 
INT EXPRT bm_poll_event (void)
 
INT EXPRT bm_empty_buffers (void)
 
INT EXPRT bm_check_buffers (void)
 
INT EXPRT bm_write_statistics_to_odb (void)
 
INT db_open_database (const char *xdatabase_name, INT database_size, HNDLE *hDB, const char *client_name)
 
INT db_close_database (HNDLE hDB)
 
INT db_close_all_databases (void)
 
INT db_protect_database (HNDLE hDB)
 
INT db_create_key (HNDLE hDB, HNDLE hKey, const char *key_name, DWORD type)
 
INT db_create_link (HNDLE hDB, HNDLE hKey, const char *link_name, const char *destination)
 
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_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_get_value (HNDLE hDB, HNDLE hKeyRoot, const char *key_name, void *data, INT *buf_size, DWORD type, BOOL create)
 
INT EXPRT db_resize_string (HNDLE hdb, HNDLE hKeyRoot, const char *key_name, int num_values, int max_string_length)
 
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 EXPRT db_set_value_string (HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string *s)
 
INT db_find_key (HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
 
INT db_find_link (HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
 
INT db_find_keys (HNDLE hDB, HNDLE hKeyRoot, const char *odbpath, std::vector< HNDLE > &hKeyVector)
 
INT db_get_parent (HNDLE hDB, HNDLE hKey, HNDLE *parenthKey)
 
INT db_scan_tree (HNDLE hDB, HNDLE hKey, INT level, INT(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
 
INT db_scan_tree_link (HNDLE hDB, HNDLE hKey, INT level, void(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
 
INT db_get_path (HNDLE hDB, HNDLE hKey, char *path, INT buf_size)
 
std::string db_get_path (HNDLE hDB, HNDLE hKey)
 
INT db_delete_key (HNDLE hDB, HNDLE hKey, BOOL follow_links)
 
INT db_delete_key (HNDLE hDB, HNDLE hKey)
 
INT db_delete (HNDLE hDB, HNDLE hKeyRoot, const char *odb_path)
 
INT EXPRT db_enum (HNDLE hDB, HNDLE hKeyRoot, std::vector< HNDLE > *sub_handles, std::vector< KEY > *sub_keys, bool follow_links)
 
INT EXPRT db_enum (HNDLE hDB, HNDLE hKeyRoot, const char *odb_path, std::vector< HNDLE > *sub_handles, std::vector< KEY > *sub_keys, bool follow_links)
 
INT db_enum_key (HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
 
INT db_enum_link (HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
 
INT db_get_next_link (HNDLE hDB, HNDLE hKey, HNDLE *subkey_handle)
 
INT db_get_key (HNDLE hDB, HNDLE hKey, KEY *key)
 
INT db_get_link (HNDLE hDB, HNDLE hKey, KEY *key)
 
INT db_get_key_info (HNDLE hDB, HNDLE hKey, char *name, INT name_size, INT *type, INT *num_values, INT *item_size)
 
INT db_get_key_time (HNDLE hDB, HNDLE hKey, DWORD *delta)
 
INT db_rename_key (HNDLE hDB, HNDLE hKey, const char *name)
 
INT db_reorder_key (HNDLE hDB, HNDLE hKey, INT idx)
 
INT db_get_data (HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
 
INT db_get_link_data (HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
 
INT db_get_data1 (HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type, INT *num_values)
 
INT db_get_data_index (HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT idx, DWORD type)
 
INT db_set_data (HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
 
INT db_set_data1 (HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
 
INT db_notify_clients_array (HNDLE hDB, HNDLE hKeys[], INT size)
 
INT db_set_link_data (HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
 
INT db_set_data_index (HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
 
INT db_set_link_data_index (HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
 
INT db_set_data_index1 (HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type, BOOL bNotify)
 
INT db_set_num_values (HNDLE hDB, HNDLE hKey, INT num_values)
 
INT db_merge_data (HNDLE hDB, HNDLE hKeyRoot, const char *name, void *data, INT data_size, INT num_values, INT type)
 
INT db_set_mode (HNDLE hDB, HNDLE hKey, WORD mode, BOOL recurse)
 
INT db_create_record (HNDLE hDB, HNDLE hKey, const char *orig_key_name, const char *init_str)
 
INT db_check_record (HNDLE hDB, HNDLE hKey, const char *keyname, const char *rec_str, BOOL correct)
 
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_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_close_record (HNDLE hDB, HNDLE hKey)
 
INT db_get_record (HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align)
 
INT db_get_record1 (HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align, const char *rec_str)
 
INT db_get_record2 (HNDLE hDB, HNDLE hKey, void *data, INT *xbuf_size, INT align, const char *rec_str, BOOL correct)
 
INT db_get_record_size (HNDLE hDB, HNDLE hKey, INT align, INT *buf_size)
 
INT db_set_record (HNDLE hDB, HNDLE hKey, void *data, INT buf_size, INT align)
 
INT EXPRT db_set_record2 (HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align, const char *rec_str)
 
INT db_send_changed_records ()
 
INT db_get_open_records (HNDLE hDB, HNDLE hKey, char *str, INT buf_size, BOOL fix)
 
INT db_add_open_record (HNDLE hDB, HNDLE hKey, WORD access_mode)
 
INT db_remove_open_record (HNDLE hDB, HNDLE hKey, BOOL lock)
 
INT EXPRT db_watch (HNDLE hDB, HNDLE hKey, void(*dispatcher)(INT, INT, INT, void *info), void *info)
 
INT db_unwatch (HNDLE hDB, HNDLE hKey)
 
INT db_unwatch_all ()
 
INT db_load (HNDLE hDB, HNDLE hKeyRoot, const char *filename, BOOL bRemote)
 
INT db_save (HNDLE hDB, HNDLE hKey, const char *filename, BOOL bRemote)
 
INT db_copy (HNDLE hDB, HNDLE hKey, char *buffer, INT *buffer_size, const char *path)
 
INT db_paste (HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
 
INT db_paste_xml (HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
 
INT db_save_struct (HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append)
 
INT db_save_string (HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append)
 
INT db_save_xml (HNDLE hDB, HNDLE hKey, const char *filename)
 
INT db_copy_xml (HNDLE hDB, HNDLE hKey, char *buffer, int *buffer_size, bool header)
 
INT db_save_json (HNDLE hDB, HNDLE hKey, const char *filename, int flags)
 
INT EXPRT db_load_json (HNDLE hdb, HNDLE key_handle, const char *filename)
 
void json_write (char **buffer, int *buffer_size, int *buffer_end, int level, const char *s, int quoted)
 
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_copy_json_obsolete (HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end, int save_keys, int follow_links, int recurse)
 
INT db_copy_json_save (HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
 
INT db_copy_json_ls (HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
 
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_copy_json_array (HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
 
INT db_copy_json_index (HNDLE hDB, HNDLE hKey, int index, char **buffer, int *buffer_size, int *buffer_end)
 
INT EXPRT db_paste_json (HNDLE hDB, HNDLE hKey, const char *buffer)
 
INT EXPRT db_paste_json_node (HNDLE hDB, HNDLE hKey, int index, const MJsonNode *json_node)
 
MJsonNode * db_sor (HNDLE hDB, const char *root_path)
 
MJsonNode * db_scl (HNDLE hDB)
 
INT db_sprintf (char *string, const void *data, INT data_size, INT idx, DWORD type)
 
INT db_sprintff (char *string, const char *format, const void *data, INT data_size, INT idx, DWORD type)
 
INT db_sprintfh (char *string, const void *data, INT data_size, INT idx, DWORD type)
 
std::string db_sprintf (const void *data, INT data_size, INT idx, DWORD type)
 
std::string db_sprintff (const char *format, const void *data, INT data_size, INT idx, DWORD type)
 
std::string db_sprintfh (const void *data, INT data_size, INT idx, DWORD type)
 
INT db_sscanf (const char *data_str, void *data, INT *data_size, INT i, DWORD tid)
 
INT db_get_watchdog_info (HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
 
INT db_update_last_activity (DWORD millitime)
 
int db_delete_client_info (HNDLE hDB, int pid)
 
char * strcomb (const char **list)
 
std::string strcomb1 (const char **list)
 
void EXPRT bk_init (void *pbh)
 
void EXPRT bk_init32 (void *event)
 
void EXPRT bk_init32a (void *event)
 
BOOL EXPRT bk_is32 (const void *event)
 
BOOL EXPRT bk_is32a (const void *event)
 
INT EXPRT bk_size (const void *pbh)
 
void EXPRT bk_create (void *pbh, const char *name, WORD type, void **pdata)
 
INT EXPRT bk_delete (void *event, const char *name)
 
INT EXPRT bk_close (void *pbh, void *pdata)
 
INT EXPRT bk_list (const void *pbh, char *bklist)
 
INT EXPRT bk_locate (const void *pbh, const char *name, void *pdata)
 
INT EXPRT bk_iterate (const void *pbh, BANK **pbk, void *pdata)
 
INT EXPRT bk_iterate32 (const void *pbh, BANK32 **pbk, void *pdata)
 
INT EXPRT bk_iterate32a (const void *pbh, BANK32A **pbk, void *pdata)
 
INT EXPRT bk_copy (char *pevent, char *psrce, const char *bkname)
 
INT EXPRT bk_swap (void *event, BOOL force)
 
INT EXPRT bk_find (const BANK_HEADER *pbkh, const char *name, DWORD *bklen, DWORD *bktype, void **pdata)
 
INT EXPRT rpc_clear_allowed_hosts (void)
 
INT EXPRT rpc_add_allowed_host (const char *hostname)
 
INT EXPRT rpc_check_allowed_host (const char *hostname)
 
INT EXPRT rpc_register_functions (const RPC_LIST *new_list, RPC_HANDLER func)
 
INT EXPRT rpc_register_function (INT id, RPC_HANDLER func)
 
INT EXPRT rpc_get_hw_type ()
 
INT EXPRT rpc_get_timeout (HNDLE hConn)
 
INT EXPRT rpc_set_timeout (HNDLE hConn, int timeout_msec, int *old_timeout_msec=NULL)
 
INT EXPRT rpc_set_name (const char *name)
 
std::string rpc_get_name ()
 
bool EXPRT rpc_is_remote (void)
 
bool EXPRT rpc_is_connected (void)
 
std::string rpc_get_mserver_hostname ()
 
bool EXPRT rpc_is_mserver (void)
 
INT EXPRT rpc_set_debug (void(*func)(const char *), INT mode)
 
void EXPRT rpc_debug_printf (const char *format,...)
 
INT EXPRT rpc_register_server (int port, int *plsock, int *pport)
 
INT EXPRT rpc_register_client (const char *name, RPC_LIST *list)
 
INT EXPRT rpc_server_loop (void)
 
INT EXPRT rpc_server_shutdown (void)
 
INT EXPRT rpc_client_call (HNDLE hConn, DWORD routine_id,...)
 
INT EXPRT rpc_call (DWORD routine_id,...)
 
INT EXPRT rpc_tid_size (INT id)
 
const char EXPRTrpc_tid_name (INT id)
 
const char EXPRTrpc_tid_name_old (INT id)
 
INT EXPRT rpc_name_tid (const char *name)
 
INT EXPRT rpc_server_connect (const char *host_name, const char *exp_name)
 
INT EXPRT rpc_client_connect (const char *host_name, INT midas_port, const char *client_name, HNDLE *hConnection)
 
INT EXPRT rpc_client_disconnect (HNDLE hConn, BOOL bShutdown)
 
INT EXPRT rpc_send_event (INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode)
 
INT EXPRT rpc_flush_event (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_test_rpc ()
 
void EXPRT rpc_get_convert_flags (INT *convert_flags)
 
void EXPRT rpc_convert_single (void *data, INT tid, INT flags, INT convert_flags)
 
void EXPRT rpc_convert_data (void *data, INT tid, INT flags, INT size, INT convert_flags)
 
DWORD ss_millitime ()
 
DWORD ss_time ()
 
double ss_time_sec ()
 
DWORD ss_settime (DWORD seconds)
 
void ss_tzset ()
 
time_t ss_mktime (struct tm *tms)
 
std::string ss_asctime ()
 
INT ss_sleep (INT millisec)
 
BOOL ss_kbhit ()
 
std::string ss_getcwd ()
 
double ss_nan ()
 
int ss_isnan (double x)
 
int ss_isfin (double x)
 
void ss_clear_screen ()
 
void ss_printf (INT x, INT y, const char *format,...)
 
void ss_set_screen_size (int x, int y)
 
char * ss_getpass (const char *prompt)
 
INT ss_getchar (BOOL reset)
 
char * ss_crypt (const char *buf, const char *salt)
 
char * ss_gets (char *string, int size)
 
void * ss_ctrlc_handler (void(*func)(int))
 
INT ss_write_tcp (int sock, const char *buffer, size_t buffer_size)
 
INT ss_directio_give_port (INT start, INT end)
 
INT ss_directio_lock_port (INT start, INT end)
 
INT ss_tape_open (char *path, INT oflag, INT *channel)
 
INT ss_tape_close (INT channel)
 
INT ss_tape_status (char *path)
 
INT ss_tape_read (INT channel, void *pdata, INT *count)
 
INT ss_tape_write (INT channel, void *pdata, INT count)
 
INT ss_tape_write_eof (INT channel)
 
INT ss_tape_fskip (INT channel, INT count)
 
INT ss_tape_rskip (INT channel, INT count)
 
INT ss_tape_rewind (INT channel)
 
INT ss_tape_spool (INT channel)
 
INT ss_tape_mount (INT channel)
 
INT ss_tape_unmount (INT channel)
 
INT ss_tape_get_blockn (INT channel)
 
double ss_disk_free (const char *path)
 
double ss_file_size (const char *path)
 
time_t ss_file_time (const char *path)
 
int ss_dir_exist (const char *path)
 
int ss_file_exist (const char *path)
 
int ss_file_link_exist (const char *path)
 
INT ss_file_remove (const char *path)
 
INT ss_file_find (const char *path, const char *pattern, char **plist)
 
INT ss_dir_find (const char *path, const char *pattern, char **plist)
 
INT ss_dirlink_find (const char *path, const char *pattern, char **plist)
 
INT ss_file_find (const char *path, const char *pattern, STRING_LIST *plist)
 
INT ss_dir_find (const char *path, const char *pattern, STRING_LIST *plist)
 
INT ss_dirlink_find (const char *path, const char *pattern, STRING_LIST *plist)
 
double ss_disk_size (const char *path)
 
int ss_file_copy (const char *src, const char *dst, bool append)
 
bool ss_is_valid_utf8 (const char *string)
 
bool ss_repair_utf8 (char *string)
 
bool ss_repair_utf8 (std::string &s)
 
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_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)
 
INT EXPRT el_search_run (int run, char *return_tag)
 
INT EXPRT el_delete_message (const char *tag)
 
INT EXPRT al_check (void)
 
INT EXPRT al_trigger_alarm (const char *alarm_name, const char *alarm_message, const char *default_class, const char *cond_str, INT type)
 
INT EXPRT al_trigger_class (const char *alarm_class, const char *alarm_message, BOOL first)
 
INT EXPRT al_reset_alarm (const char *alarm_name)
 
BOOL EXPRT al_evaluate_condition (const char *alarm_name, const char *condition, std::string *pvalue)
 
INT al_get_alarms (std::string *presult)
 
INT EXPRT al_define_odb_alarm (const char *name, const char *condition, const char *aclass, const char *message)
 
void EXPRT test_register (ANA_TEST *t)
 
void EXPRT add_data_dir (char *result, char *file)
 
void EXPRT lock_histo (INT id)
 
void EXPRT open_subfolder (const char *name)
 
void EXPRT close_subfolder (void)
 
int hs_image_retrieve (std::string image_name, time_t start, time_t stop, std::vector< time_t > &vtime, std::vector< std::string > &vfilename)
 

Detailed Description

dox

The main include file

Definition in file midas.h.

Macro Definition Documentation

◆ ANA_CONTINUE

#define ANA_CONTINUE   1

dox dox

Definition at line 840 of file midas.h.

◆ ANA_OUTPUT_INFO_STR

#define ANA_OUTPUT_INFO_STR   "\Filename = STRING : [256] run%05d.asc\n\RWNT = BOOL : 0\n\Histo Dump = BOOL : 0\n\Histo Dump Filename = STRING : [256] his%05d.rz\n\Clear histos = BOOL : 1\n\Last Histo Filename = STRING : [256] last.rz\n\Events to ODB = BOOL : 1\n\Global Memory Name = STRING : [8] ONLN\n\"

Definition at line 1324 of file midas.h.

◆ ANA_SKIP

#define ANA_SKIP   0

Definition at line 841 of file midas.h.

◆ AT_EVALUATED

#define AT_EVALUATED   3

Definition at line 1443 of file midas.h.

◆ AT_INTERNAL

#define AT_INTERNAL   1

Definition at line 1441 of file midas.h.

◆ AT_LAST

#define AT_LAST   4

Definition at line 1445 of file midas.h.

◆ AT_PERIODIC

#define AT_PERIODIC   4

Definition at line 1444 of file midas.h.

◆ AT_PROGRAM

#define AT_PROGRAM   2

Definition at line 1442 of file midas.h.

◆ BANK_FORMAT_32BIT

#define BANK_FORMAT_32BIT   (1<<4)

Definition at line 1203 of file midas.h.

◆ BANK_FORMAT_64BIT_ALIGNED

#define BANK_FORMAT_64BIT_ALIGNED   (1<<5)

Definition at line 1204 of file midas.h.

◆ BANK_FORMAT_VERSION

#define BANK_FORMAT_VERSION   1

Definition at line 1202 of file midas.h.

◆ BANKLIST_MAX

#define BANKLIST_MAX   4096

max # of banks in event

Definition at line 278 of file midas.h.

◆ CARRAY [1/2]

#define CARRAY (   _i)    ( ((void *) prpc_param[_i]))

Definition at line 1583 of file midas.h.

◆ CARRAY [2/2]

#define CARRAY (   _i)    ( ((void *) prpc_param[_i]))

Definition at line 1583 of file midas.h.

◆ cARRAY

#define cARRAY   ( ((void *) prpc_param[--n_param]))

Definition at line 1655 of file midas.h.

◆ CBOOL [1/2]

#define CBOOL (   _i)    (* ((BOOL *) prpc_param[_i]))

Definition at line 1573 of file midas.h.

◆ CBOOL [2/2]

#define CBOOL (   _i)    (* ((BOOL *) prpc_param[_i]))

Definition at line 1573 of file midas.h.

◆ cBOOL

#define cBOOL   (* ((BOOL *) prpc_param[--n_param]))

Definition at line 1645 of file midas.h.

◆ CBYTE [1/2]

#define CBYTE (   _i)    (* ((BYTE *) prpc_param[_i]))

Definition at line 1552 of file midas.h.

◆ CBYTE [2/2]

#define CBYTE (   _i)    (* ((BYTE *) prpc_param[_i]))

Definition at line 1552 of file midas.h.

◆ cBYTE

#define cBYTE   (* ((BYTE *) prpc_param[--n_param]))

Definition at line 1624 of file midas.h.

◆ CDOUBLE [1/2]

#define CDOUBLE (   _i)    (* ((double *) prpc_param[_i]))

Definition at line 1579 of file midas.h.

◆ CDOUBLE [2/2]

#define CDOUBLE (   _i)    (* ((double *) prpc_param[_i]))

Definition at line 1579 of file midas.h.

◆ cDOUBLE

#define cDOUBLE   (* ((double *) prpc_param[--n_param]))

Definition at line 1651 of file midas.h.

◆ CDWORD [1/2]

#define CDWORD (   _i)    (* ((DWORD *) prpc_param[_i]))

Definition at line 1567 of file midas.h.

◆ CDWORD [2/2]

#define CDWORD (   _i)    (* ((DWORD *) prpc_param[_i]))

Definition at line 1567 of file midas.h.

◆ cDWORD

#define cDWORD   (* ((DWORD *) prpc_param[--n_param]))

Definition at line 1639 of file midas.h.

◆ CF_ENDIAN

#define CF_ENDIAN   (1<<0)

Data conversion flags

Definition at line 1547 of file midas.h.

◆ CF_IEEE2VAX

#define CF_IEEE2VAX   (1<<1)

Definition at line 1548 of file midas.h.

◆ CF_VAX2IEEE

#define CF_VAX2IEEE   (1<<2)

Definition at line 1549 of file midas.h.

◆ CFLOAT [1/2]

#define CFLOAT (   _i)    (* ((float *) prpc_param[_i]))

Definition at line 1576 of file midas.h.

◆ CFLOAT [2/2]

#define CFLOAT (   _i)    (* ((float *) prpc_param[_i]))

Definition at line 1576 of file midas.h.

◆ cFLOAT

#define cFLOAT   (* ((float *) prpc_param[--n_param]))

Definition at line 1648 of file midas.h.

◆ CH_BS

#define CH_BS   8

dox special characters

Definition at line 445 of file midas.h.

◆ CH_CR

#define CH_CR   13

Definition at line 448 of file midas.h.

◆ CH_DELETE

#define CH_DELETE   (CH_EXT+2)

Definition at line 454 of file midas.h.

◆ CH_DOWN

#define CH_DOWN   (CH_EXT+7)

Definition at line 459 of file midas.h.

◆ CH_END

#define CH_END   (CH_EXT+3)

Definition at line 455 of file midas.h.

◆ CH_EXT

#define CH_EXT   0x100

Definition at line 450 of file midas.h.

◆ CH_HOME

#define CH_HOME   (CH_EXT+0)

Definition at line 452 of file midas.h.

◆ CH_INSERT

#define CH_INSERT   (CH_EXT+1)

Definition at line 453 of file midas.h.

◆ CH_LEFT

#define CH_LEFT   (CH_EXT+9)

Definition at line 461 of file midas.h.

◆ CH_LF

#define CH_LF   10

Definition at line 447 of file midas.h.

◆ CH_PDOWN

#define CH_PDOWN   (CH_EXT+5)

Definition at line 457 of file midas.h.

◆ CH_PUP

#define CH_PUP   (CH_EXT+4)

Definition at line 456 of file midas.h.

◆ CH_RIGHT

#define CH_RIGHT   (CH_EXT+8)

Definition at line 460 of file midas.h.

◆ CH_TAB

#define CH_TAB   9

Definition at line 446 of file midas.h.

◆ CH_UP

#define CH_UP   (CH_EXT+6)

Definition at line 458 of file midas.h.

◆ CHNDLE [1/2]

#define CHNDLE (   _i)    (* ((HNDLE *) prpc_param[_i]))

Definition at line 1570 of file midas.h.

◆ CHNDLE [2/2]

#define CHNDLE (   _i)    (* ((HNDLE *) prpc_param[_i]))

Definition at line 1570 of file midas.h.

◆ cHNDLE

#define cHNDLE   (* ((HNDLE *) prpc_param[--n_param]))

Definition at line 1642 of file midas.h.

◆ CINT [1/2]

#define CINT (   _i)    (* ((INT *) prpc_param[_i]))

Definition at line 1558 of file midas.h.

◆ CINT [2/2]

#define CINT (   _i)    (* ((INT *) prpc_param[_i]))

Definition at line 1558 of file midas.h.

◆ cINT

#define cINT   (* ((INT *) prpc_param[--n_param]))

Definition at line 1630 of file midas.h.

◆ CLONG [1/2]

#define CLONG (   _i)    (* ((long *) prpc_param[_i]))

Definition at line 1564 of file midas.h.

◆ CLONG [2/2]

#define CLONG (   _i)    (* ((long *) prpc_param[_i]))

Definition at line 1564 of file midas.h.

◆ cLONG

#define cLONG   (* ((long *) prpc_param[--n_param]))

Definition at line 1636 of file midas.h.

◆ CNAF

#define CNAF   0x1 /* normal read/write */

CNAF commands

Definition at line 491 of file midas.h.

◆ CNAF_CRATE_CLEAR

#define CNAF_CRATE_CLEAR   0x102

Definition at line 496 of file midas.h.

◆ CNAF_CRATE_ZINIT

#define CNAF_CRATE_ZINIT   0x103

Definition at line 497 of file midas.h.

◆ CNAF_INHIBIT_CLEAR

#define CNAF_INHIBIT_CLEAR   0x101

Definition at line 495 of file midas.h.

◆ CNAF_INHIBIT_SET

#define CNAF_INHIBIT_SET   0x100

Definition at line 494 of file midas.h.

◆ CNAF_nQ

#define CNAF_nQ   0x2 /* Repeat read until noQ */

Definition at line 492 of file midas.h.

◆ CNAF_TEST

#define CNAF_TEST   0x110

Definition at line 498 of file midas.h.

◆ CPBOOL [1/2]

#define CPBOOL (   _i)    ( ((BOOL *) prpc_param[_i]))

Definition at line 1574 of file midas.h.

◆ CPBOOL [2/2]

#define CPBOOL (   _i)    ( ((BOOL *) prpc_param[_i]))

Definition at line 1574 of file midas.h.

◆ cPBOOL

#define cPBOOL   ( ((BOOL *) prpc_param[--n_param]))

Definition at line 1646 of file midas.h.

◆ CPBYTE [1/2]

#define CPBYTE (   _i)    ( ((BYTE *) prpc_param[_i]))

Definition at line 1553 of file midas.h.

◆ CPBYTE [2/2]

#define CPBYTE (   _i)    ( ((BYTE *) prpc_param[_i]))

Definition at line 1553 of file midas.h.

◆ cPBYTE

#define cPBYTE   ( ((BYTE *) prpc_param[--n_param]))

Definition at line 1625 of file midas.h.

◆ CPDOUBLE [1/2]

#define CPDOUBLE (   _i)    ( ((double *) prpc_param[_i]))

Definition at line 1580 of file midas.h.

◆ CPDOUBLE [2/2]

#define CPDOUBLE (   _i)    ( ((double *) prpc_param[_i]))

Definition at line 1580 of file midas.h.

◆ cPDOUBLE

#define cPDOUBLE   ( ((double *) prpc_param[--n_param]))

Definition at line 1652 of file midas.h.

◆ CPDWORD [1/2]

#define CPDWORD (   _i)    ( ((DWORD *) prpc_param[_i]))

Definition at line 1568 of file midas.h.

◆ CPDWORD [2/2]

#define CPDWORD (   _i)    ( ((DWORD *) prpc_param[_i]))

Definition at line 1568 of file midas.h.

◆ cPDWORD

#define cPDWORD   ( ((DWORD *) prpc_param[--n_param]))

Definition at line 1640 of file midas.h.

◆ CPFLOAT [1/2]

#define CPFLOAT (   _i)    ( ((float *) prpc_param[_i]))

Definition at line 1577 of file midas.h.

◆ CPFLOAT [2/2]

#define CPFLOAT (   _i)    ( ((float *) prpc_param[_i]))

Definition at line 1577 of file midas.h.

◆ cPFLOAT

#define cPFLOAT   ( ((float *) prpc_param[--n_param]))

Definition at line 1649 of file midas.h.

◆ CPHNDLE [1/2]

#define CPHNDLE (   _i)    ( ((HNDLE *) prpc_param[_i]))

Definition at line 1571 of file midas.h.

◆ CPHNDLE [2/2]

#define CPHNDLE (   _i)    ( ((HNDLE *) prpc_param[_i]))

Definition at line 1571 of file midas.h.

◆ cPHNDLE

#define cPHNDLE   ( ((HNDLE *) prpc_param[--n_param]))

Definition at line 1643 of file midas.h.

◆ CPINT [1/2]

#define CPINT (   _i)    ( ((INT *) prpc_param[_i]))

Definition at line 1559 of file midas.h.

◆ CPINT [2/2]

#define CPINT (   _i)    ( ((INT *) prpc_param[_i]))

Definition at line 1559 of file midas.h.

◆ cPINT

#define cPINT   ( ((INT *) prpc_param[--n_param]))

Definition at line 1631 of file midas.h.

◆ CPLONG [1/2]

#define CPLONG (   _i)    ( ((long *) prpc_param[_i]))

Definition at line 1565 of file midas.h.

◆ CPLONG [2/2]

#define CPLONG (   _i)    ( ((long *) prpc_param[_i]))

Definition at line 1565 of file midas.h.

◆ cPLONG

#define cPLONG   ( ((long *) prpc_param[--n_param]))

Definition at line 1637 of file midas.h.

◆ CPSHORT [1/2]

#define CPSHORT (   _i)    ( ((short *) prpc_param[_i]))

Definition at line 1556 of file midas.h.

◆ CPSHORT [2/2]

#define CPSHORT (   _i)    ( ((short *) prpc_param[_i]))

Definition at line 1556 of file midas.h.

◆ cPSHORT

#define cPSHORT   ( ((short *) prpc_param[--n_param]))

Definition at line 1628 of file midas.h.

◆ CPSTDSTRING

#define CPSTDSTRING (   _i)    ( ((std::string*) prpc_param[_i]))

Definition at line 1621 of file midas.h.

◆ CPSTDVECTOR

#define CPSTDVECTOR (   _i)    (((std::vector<char>*) prpc_param[_i]))

Definition at line 1622 of file midas.h.

◆ CPWORD [1/2]

#define CPWORD (   _i)    ( ((WORD *) prpc_param[_i]))

Definition at line 1562 of file midas.h.

◆ CPWORD [2/2]

#define CPWORD (   _i)    ( ((WORD *) prpc_param[_i]))

Definition at line 1562 of file midas.h.

◆ cPWORD

#define cPWORD   ( ((WORD *) prpc_param[--n_param]))

Definition at line 1634 of file midas.h.

◆ CSHORT [1/2]

#define CSHORT (   _i)    (* ((short *) prpc_param[_i]))

Definition at line 1555 of file midas.h.

◆ CSHORT [2/2]

#define CSHORT (   _i)    (* ((short *) prpc_param[_i]))

Definition at line 1555 of file midas.h.

◆ cSHORT

#define cSHORT   (* ((short *) prpc_param[--n_param]))

Definition at line 1627 of file midas.h.

◆ CSTDSTRING

#define CSTDSTRING (   _i)    (* ((std::string*) prpc_param[_i]))

Definition at line 1618 of file midas.h.

◆ CSTDVECTOR

#define CSTDVECTOR (   _i)    (*((std::vector<char>*) prpc_param[_i]))

Definition at line 1619 of file midas.h.

◆ CSTRING [1/2]

#define CSTRING (   _i)    ( ((char *) prpc_param[_i]))

Definition at line 1582 of file midas.h.

◆ CSTRING [2/2]

#define CSTRING (   _i)    ( ((char *) prpc_param[_i]))

Definition at line 1582 of file midas.h.

◆ cSTRING

#define cSTRING   ( ((char *) prpc_param[--n_param]))

Definition at line 1654 of file midas.h.

◆ CWORD [1/2]

#define CWORD (   _i)    (* ((WORD *) prpc_param[_i]))

Definition at line 1561 of file midas.h.

◆ CWORD [2/2]

#define CWORD (   _i)    (* ((WORD *) prpc_param[_i]))

Definition at line 1561 of file midas.h.

◆ cWORD

#define cWORD   (* ((WORD *) prpc_param[--n_param]))

Definition at line 1633 of file midas.h.

◆ DATA_SIZE

#define DATA_SIZE (   e)    ((((EVENT_HEADER *) e)-1)->data_size)

DATA_SIZE Extract or set/reset the data size field pointed by the argument.

Parameters
epointer to the midas event (pevent)

Definition at line 895 of file midas.h.

◆ DATABASE_VERSION

#define DATABASE_VERSION   3

Definition at line 34 of file midas.h.

◆ DEF_TEST

#define DEF_TEST (   t)    extern ANA_TEST t;

Definition at line 1351 of file midas.h.

◆ DEFAULT_BUFFER_SIZE

#define DEFAULT_BUFFER_SIZE   (32*1024*1024)

default event buffer size 32MiB, actual event buffer size is set by ODB /Experiment/Buffer sizes/SYSTEM

Definition at line 255 of file midas.h.

◆ DEFAULT_MAX_EVENT_SIZE

#define DEFAULT_MAX_EVENT_SIZE   (4*1024*1024)

default maximum event size 4MiB, actual maximum event size is set by ODB /Experiment/MAX_EVENT_SIZE

Definition at line 254 of file midas.h.

◆ DEFAULT_ODB_SIZE

#define DEFAULT_ODB_SIZE   0x100000

online database 1M

Definition at line 270 of file midas.h.

◆ DEFAULT_RPC_TIMEOUT

#define DEFAULT_RPC_TIMEOUT   10000

Timeouts [ms]

Definition at line 287 of file midas.h.

◆ DEFAULT_WATCHDOG_TIMEOUT

#define DEFAULT_WATCHDOG_TIMEOUT   10000

Watchdog

Definition at line 290 of file midas.h.

◆ DF_HW_RAMP

#define DF_HW_RAMP   (1<<5)

Definition at line 1056 of file midas.h.

◆ DF_INPUT

#define DF_INPUT   (1<<0)

channel is input

Definition at line 1051 of file midas.h.

◆ DF_LABELS_FROM_DEVICE

#define DF_LABELS_FROM_DEVICE   (1<<6)

Definition at line 1057 of file midas.h.

◆ DF_MULTITHREAD

#define DF_MULTITHREAD   (1<<4)

Definition at line 1055 of file midas.h.

◆ DF_OUTPUT

#define DF_OUTPUT   (1<<1)

channel is output

Definition at line 1052 of file midas.h.

◆ DF_POLL_DEMAND

#define DF_POLL_DEMAND   (1<<12)

Definition at line 1063 of file midas.h.

◆ DF_PRIO_DEVICE

#define DF_PRIO_DEVICE   (1<<2)

get demand values from device instead of ODB

Definition at line 1053 of file midas.h.

◆ DF_PRIORITY_READ

#define DF_PRIORITY_READ   (1<<13)

Definition at line 1064 of file midas.h.

◆ DF_QUICKSTART

#define DF_QUICKSTART   (1<<11)

Definition at line 1062 of file midas.h.

◆ DF_READ_ONLY

#define DF_READ_ONLY   (1<<3)

never write demand values to device

Definition at line 1054 of file midas.h.

◆ DF_REPORT_CHSTATE

#define DF_REPORT_CHSTATE   (1<<9)

Definition at line 1060 of file midas.h.

◆ DF_REPORT_CRATEMAP

#define DF_REPORT_CRATEMAP   (1<<10)

Definition at line 1061 of file midas.h.

◆ DF_REPORT_STATUS

#define DF_REPORT_STATUS   (1<<8)

Definition at line 1059 of file midas.h.

◆ DF_REPORT_TEMP

#define DF_REPORT_TEMP   (1<<7)

Definition at line 1058 of file midas.h.

◆ DIR_SEPARATOR

#define DIR_SEPARATOR   '/'

Definition at line 193 of file midas.h.

◆ DIR_SEPARATOR_STR

#define DIR_SEPARATOR_STR   "/"

Definition at line 194 of file midas.h.

◆ EQUIPMENT_COMMON_STR

#define EQUIPMENT_COMMON_STR   "\Event ID = WORD : 0\n\Trigger mask = WORD : 0\n\Buffer = STRING : [32] SYSTEM\n\Type = INT : 0\n\Source = INT : 0\n\Format = STRING : [8] FIXED\n\Enabled = BOOL : 0\n\Read on = INT : 0\n\Period = INT : 0\n\Event limit = DOUBLE : 0\n\Num subevents = DWORD : 0\n\Log history = INT : 0\n\Frontend host = STRING : [32] \n\Frontend name = STRING : [32] \n\Frontend file name = STRING : [256] \n\Status = STRING : [256] \n\Status color = STRING : [32] \n\Hidden = BOOL : 0\n\"

Definition at line 1112 of file midas.h.

◆ EQUIPMENT_STATISTICS_STR

#define EQUIPMENT_STATISTICS_STR   "\Events sent = DOUBLE : 0\n\Events per sec. = DOUBLE : 0\n\kBytes per sec. = DOUBLE : 0\n\"

Definition at line 1144 of file midas.h.

◆ EVENT_BUFFER_NAME

#define EVENT_BUFFER_NAME   "SYSTEM"

buffer name for commands

Definition at line 269 of file midas.h.

◆ EVENT_ID

#define EVENT_ID (   e)    ((((EVENT_HEADER *) e)-1)->event_id)

EVENT_ID Extract or set the event ID field pointed by the argument..

Parameters
epointer to the midas event (pevent)

Definition at line 874 of file midas.h.

◆ EVENT_SOURCE

#define EVENT_SOURCE (   e,
 
)    (* (INT*) (e+o))

Definition at line 897 of file midas.h.

◆ EVENTID_BOR

#define EVENTID_BOR   ((short int) 0x8000)

system event IDs Begin-of-run

Definition at line 901 of file midas.h.

◆ EVENTID_EOR

#define EVENTID_EOR   ((short int) 0x8001)

End-of-run

Definition at line 902 of file midas.h.

◆ EVENTID_FRAG

#define EVENTID_FRAG   ((short int) 0xD000) /* added to real event-id */

Definition at line 908 of file midas.h.

◆ EVENTID_FRAG1

#define EVENTID_FRAG1   ((short int) 0xC000) /* first fragment */

fragmented events

Definition at line 907 of file midas.h.

◆ EVENTID_MESSAGE

#define EVENTID_MESSAGE   ((short int) 0x8002)

Message events

Definition at line 903 of file midas.h.

◆ EXPRT

#define EXPRT

Definition at line 1676 of file midas.h.

◆ FALSE

#define FALSE   0

Definition at line 183 of file midas.h.

◆ HAVE_BM_RECEIVE_EVENT_ALLOC

#define HAVE_BM_RECEIVE_EVENT_ALLOC   1

Definition at line 1813 of file midas.h.

◆ HAVE_BM_RECEIVE_EVENT_VEC

#define HAVE_BM_RECEIVE_EVENT_VEC   1

Definition at line 1811 of file midas.h.

◆ HAVE_BM_SEND_EVENT_VEC

#define HAVE_BM_SEND_EVENT_VEC   1

Definition at line 1806 of file midas.h.

◆ HAVE_CM_GET_CLIENT_NAME

#define HAVE_CM_GET_CLIENT_NAME   1

Definition at line 1728 of file midas.h.

◆ HAVE_CM_PERIODIC_TASKS

#define HAVE_CM_PERIODIC_TASKS   1

Definition at line 1743 of file midas.h.

◆ HOST_NAME_LENGTH

#define HOST_NAME_LENGTH   256

length of TCP/IP names

Definition at line 273 of file midas.h.

◆ INLINE

#define INLINE

Definition at line 205 of file midas.h.

◆ JS_LEVEL_0

#define JS_LEVEL_0   0

flags for db_json_save()

Definition at line 1659 of file midas.h.

◆ JS_LEVEL_1

#define JS_LEVEL_1   1

Definition at line 1660 of file midas.h.

◆ JS_MUST_BE_SUBDIR

#define JS_MUST_BE_SUBDIR   1

Definition at line 1661 of file midas.h.

◆ JSFLAG_FOLLOW_LINKS

#define JSFLAG_FOLLOW_LINKS   (1<<2)

Definition at line 1663 of file midas.h.

◆ JSFLAG_LOWERCASE

#define JSFLAG_LOWERCASE   (1<<4)

Definition at line 1665 of file midas.h.

◆ JSFLAG_OMIT_LAST_WRITTEN

#define JSFLAG_OMIT_LAST_WRITTEN   (1<<6)

Definition at line 1667 of file midas.h.

◆ JSFLAG_OMIT_NAMES

#define JSFLAG_OMIT_NAMES   (1<<5)

Definition at line 1666 of file midas.h.

◆ JSFLAG_OMIT_OLD

#define JSFLAG_OMIT_OLD   (1<<7)

Definition at line 1668 of file midas.h.

◆ JSFLAG_RECURSE

#define JSFLAG_RECURSE   (1<<3)

Definition at line 1664 of file midas.h.

◆ JSFLAG_SAVE_KEYS

#define JSFLAG_SAVE_KEYS   (1<<1)

Definition at line 1662 of file midas.h.

◆ LAM_SOURCE

#define LAM_SOURCE (   c,
 
)    (c<<24 | ((s) & 0xFFFFFF))

Code the LAM crate and LAM station into a bitwise register.

Parameters
cCrate number
sSlot number

Definition at line 469 of file midas.h.

◆ LAM_SOURCE_CRATE

#define LAM_SOURCE_CRATE (   c)    (c>>24)

Convert the coded LAM crate to Crate number.

Parameters
ccoded crate

Definition at line 481 of file midas.h.

◆ LAM_SOURCE_STATION

#define LAM_SOURCE_STATION (   s)    ((s) & 0xFFFFFF)

Convert the coded LAM station to Station number.

Parameters
sSlot number

Definition at line 487 of file midas.h.

◆ LAM_STATION

#define LAM_STATION (   s)    (1<<(s-1))

Code the Station number bitwise for the LAM source.

Parameters
sSlot number

Definition at line 475 of file midas.h.

◆ M_CALLOC

#define M_CALLOC (   x,
 
)    calloc(x,y)

Definition at line 1488 of file midas.h.

◆ M_FREE

#define M_FREE (   x)    free(x)

Definition at line 1489 of file midas.h.

◆ M_MALLOC

#define M_MALLOC (   x)    malloc(x)

Definition at line 1487 of file midas.h.

◆ MATTRPRINTF

#define MATTRPRINTF (   a,
 
)

Definition at line 221 of file midas.h.

◆ MAX_CLIENTS

#define MAX_CLIENTS   64

client processes per buf/db

Definition at line 274 of file midas.h.

◆ MAX_EVENT_REQUESTS

#define MAX_EVENT_REQUESTS   10

event requests per client

Definition at line 275 of file midas.h.

◆ MAX_ODB_PATH

#define MAX_ODB_PATH   256

length of path in ODB

Definition at line 277 of file midas.h.

◆ MAX_OPEN_RECORDS

#define MAX_OPEN_RECORDS   256

number of open DB records

Definition at line 276 of file midas.h.

◆ MAX_RPC_PARAMS

#define MAX_RPC_PARAMS   20

Definition at line 1531 of file midas.h.

◆ MAX_WRITE_CACHE_EVENT_SIZE_DIV

#define MAX_WRITE_CACHE_EVENT_SIZE_DIV   (10)

maximum event size cached in write cache as fraction of write cache size

Definition at line 259 of file midas.h.

◆ MAX_WRITE_CACHE_SIZE_DIV

#define MAX_WRITE_CACHE_SIZE_DIV   (3)

maximum write cache size as fraction of buffer size

Definition at line 258 of file midas.h.

◆ MIDAS_MAGIC

#define MIDAS_MAGIC   0x494d

magic number used in trigger_mask for BOR event 'MI'

Definition at line 912 of file midas.h.

◆ MIDAS_TCP_PORT

#define MIDAS_TCP_PORT   1175 /* port under which server is listening */

Definition at line 283 of file midas.h.

◆ MIDAS_TYPE_DEFINED

#define MIDAS_TYPE_DEFINED

Definition at line 95 of file midas.h.

◆ MIDAS_VERSION

#define MIDAS_VERSION   "2.1"

Definition at line 37 of file midas.h.

◆ MIN_WRITE_CACHE_SIZE

#define MIN_WRITE_CACHE_SIZE   (10000000)

default and minimum write cache size, in bytes

Definition at line 257 of file midas.h.

◆ MUTEX_T_DEFINED

#define MUTEX_T_DEFINED

Definition at line 238 of file midas.h.

◆ NAME_LENGTH

#define NAME_LENGTH   32

length of names, mult.of 8!

Definition at line 272 of file midas.h.

◆ NET_TCP_SIZE

#define NET_TCP_SIZE   0xFFFF

maximum TCP transfer size

Definition at line 266 of file midas.h.

◆ O_LARGEFILE

#define O_LARGEFILE   0

Definition at line 210 of file midas.h.

◆ OPT_TCP_SIZE

#define OPT_TCP_SIZE   8192

optimal TCP buffer size

Definition at line 267 of file midas.h.

◆ PAWC_DEFINE

#define PAWC_DEFINE (   size)
Value:
INT PAWC_NAME[size/4]; \
INT pawc_size = size
INT pawc_size
int INT
Definition midas.h:129
#define PAWC_NAME
Definition midas.h:1501

Definition at line 1504 of file midas.h.

1524 {
1525 WORD tid;
1526 WORD flags;
1527 INT n;
1528} RPC_PARAM;
1529
1530#define MAX_RPC_PARAMS 20
1531
1532typedef struct {
1533 INT id;
1534 const char *name;
1536 RPC_HANDLER *dispatch;
1537} RPC_LIST;
1538
1541#define RPC_MIN_ID 1
1542#define RPC_MAX_ID 9999
1543
1546#define CF_ENDIAN (1<<0)
1547#define CF_IEEE2VAX (1<<1)
1548#define CF_VAX2IEEE (1<<2)
1549//#define CF_ASCII (1<<3)
1550
1551#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1552#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1553
1554#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1555#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1556
1557#define CINT(_i) (* ((INT *) prpc_param[_i]))
1558#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1559
1560#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1561#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1562
1563#define CLONG(_i) (* ((long *) prpc_param[_i]))
1564#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1565
1566#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1567#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1568
1569#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1570#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1571
1572#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1573#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1574
1575#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1576#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1577
1578#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1579#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1580
1581#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1582#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1583
1584#define CBYTE(_i) (* ((BYTE *) prpc_param[_i]))
1585#define CPBYTE(_i) ( ((BYTE *) prpc_param[_i]))
1586
1587#define CSHORT(_i) (* ((short *) prpc_param[_i]))
1588#define CPSHORT(_i) ( ((short *) prpc_param[_i]))
1589
1590#define CINT(_i) (* ((INT *) prpc_param[_i]))
1591#define CPINT(_i) ( ((INT *) prpc_param[_i]))
1592
1593#define CWORD(_i) (* ((WORD *) prpc_param[_i]))
1594#define CPWORD(_i) ( ((WORD *) prpc_param[_i]))
1595
1596#define CLONG(_i) (* ((long *) prpc_param[_i]))
1597#define CPLONG(_i) ( ((long *) prpc_param[_i]))
1598
1599#define CDWORD(_i) (* ((DWORD *) prpc_param[_i]))
1600#define CPDWORD(_i) ( ((DWORD *) prpc_param[_i]))
1601
1602#define CHNDLE(_i) (* ((HNDLE *) prpc_param[_i]))
1603#define CPHNDLE(_i) ( ((HNDLE *) prpc_param[_i]))
1604
1605#define CBOOL(_i) (* ((BOOL *) prpc_param[_i]))
1606#define CPBOOL(_i) ( ((BOOL *) prpc_param[_i]))
1607
1608#define CFLOAT(_i) (* ((float *) prpc_param[_i]))
1609#define CPFLOAT(_i) ( ((float *) prpc_param[_i]))
1610
1611#define CDOUBLE(_i) (* ((double *) prpc_param[_i]))
1612#define CPDOUBLE(_i) ( ((double *) prpc_param[_i]))
1613
1614#define CSTRING(_i) ( ((char *) prpc_param[_i]))
1615#define CARRAY(_i) ( ((void *) prpc_param[_i]))
1616
1617#define CSTDSTRING(_i) (* ((std::string*) prpc_param[_i]))
1618#define CSTDVECTOR(_i) (*((std::vector<char>*) prpc_param[_i]))
1619
1620#define CPSTDSTRING(_i) ( ((std::string*) prpc_param[_i]))
1621#define CPSTDVECTOR(_i) (((std::vector<char>*) prpc_param[_i]))
1622
1623#define cBYTE (* ((BYTE *) prpc_param[--n_param]))
1624#define cPBYTE ( ((BYTE *) prpc_param[--n_param]))
1625
1626#define cSHORT (* ((short *) prpc_param[--n_param]))
1627#define cPSHORT ( ((short *) prpc_param[--n_param]))
1628
1629#define cINT (* ((INT *) prpc_param[--n_param]))
1630#define cPINT ( ((INT *) prpc_param[--n_param]))
1631
1632#define cWORD (* ((WORD *) prpc_param[--n_param]))
1633#define cPWORD ( ((WORD *) prpc_param[--n_param]))
1634
1635#define cLONG (* ((long *) prpc_param[--n_param]))
1636#define cPLONG ( ((long *) prpc_param[--n_param]))
1637
1638#define cDWORD (* ((DWORD *) prpc_param[--n_param]))
1639#define cPDWORD ( ((DWORD *) prpc_param[--n_param]))
1640
1641#define cHNDLE (* ((HNDLE *) prpc_param[--n_param]))
1642#define cPHNDLE ( ((HNDLE *) prpc_param[--n_param]))
1643
1644#define cBOOL (* ((BOOL *) prpc_param[--n_param]))
1645#define cPBOOL ( ((BOOL *) prpc_param[--n_param]))
1646
1647#define cFLOAT (* ((float *) prpc_param[--n_param]))
1648#define cPFLOAT ( ((float *) prpc_param[--n_param]))
1649
1650#define cDOUBLE (* ((double *) prpc_param[--n_param]))
1651#define cPDOUBLE ( ((double *) prpc_param[--n_param]))
1652
1653#define cSTRING ( ((char *) prpc_param[--n_param]))
1654#define cARRAY ( ((void *) prpc_param[--n_param]))
1655
1658#define JS_LEVEL_0 0
1659#define JS_LEVEL_1 1
1660#define JS_MUST_BE_SUBDIR 1
1661#define JSFLAG_SAVE_KEYS (1<<1)
1662#define JSFLAG_FOLLOW_LINKS (1<<2)
1663#define JSFLAG_RECURSE (1<<3)
1664#define JSFLAG_LOWERCASE (1<<4)
1665#define JSFLAG_OMIT_NAMES (1<<5)
1666#define JSFLAG_OMIT_LAST_WRITTEN (1<<6)
1667#define JSFLAG_OMIT_OLD (1<<7)
1668
1669/*---- Function declarations ---------------------------------------*/
1670
1671/* make functions under WinNT dll exportable */
1672#if defined(OS_WINNT) && defined(MIDAS_DLL)
1673#define EXPRT __declspec(dllexport)
1674#else
1675#define EXPRT
1676#endif
1677
1678 /*---- common routines ----*/
1679 std::string cm_get_error(INT code);
1680 const char* EXPRT cm_get_version(void);
1681 const char* EXPRT cm_get_revision(void);
1682 [[deprecated("Use std::string cm_get_experiment_name();")]]
1683 INT EXPRT cm_get_experiment_name(char *name, int name_size);
1684 std::string cm_get_experiment_name();
1685 INT EXPRT cm_get_environment(char *host_name, int host_name_size, char *exp_name, int exp_name_size);
1686 INT EXPRT cm_get_environment(std::string *host_name, std::string *exp_name);
1688 INT EXPRT cm_list_experiments_remote(const char *host_name, STRING_LIST* exp_names);
1689 [[deprecated("Use std::string cm_get_exptab_filename();")]]
1690 INT EXPRT cm_get_exptab_filename(char* filename, int filename_size);
1691 std::string cm_get_exptab_filename();
1692 [[deprecated("Please use the std::string version of this function")]]
1693 INT EXPRT cm_get_exptab(const char* exp_name, char* expdir, int expdir_size, char* expuser, int expuser_size);
1694 INT EXPRT cm_get_exptab(const char* exp_name, std::string* expdir, std::string* expuser);
1696 INT EXPRT cm_select_experiment_remote(const char *host_name, std::string *exp_name);
1698 INT EXPRT cm_connect_experiment(const char *host_name, const char *exp_name,
1699 const char *client_name, void (*func) (char *));
1700 INT EXPRT cm_connect_experiment1(const char *host_name, const char *exp_name,
1701 const char *client_name,
1702 void (*func) (char *), INT odb_size,
1703 DWORD watchdog_timeout);
1706 int sequence_number);
1710 INT EXPRT cm_query_transition(int *transition, int *run_number, int *trans_time);
1713 INT EXPRT cm_transition(INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag);
1715 std::string EXPRT cm_transition_name(int transition);
1717 INT EXPRT cm_register_function(INT id, INT(*func) (INT, void **));
1718 INT EXPRT cm_connect_client(const char *client_name, HNDLE * hConn);
1719 INT EXPRT cm_disconnect_client(HNDLE hConn, BOOL bShutdown);
1722 INT EXPRT cm_set_experiment_semaphore(INT semaphore_alarm, INT semaphore_elog, INT semaphore_history, INT semaphore_msg);
1723 INT EXPRT cm_get_experiment_semaphore(INT * semaphore_alarm, INT * semaphore_elog, INT * semaphore_history, INT * semaphore_msg);
1724 INT EXPRT cm_set_client_info(HNDLE hDB, HNDLE * hKeyClient,
1725 const char *host_name, const char *client_name,
1726 INT computer_id, const char *password, DWORD watchdog_timeout);
1727#define HAVE_CM_GET_CLIENT_NAME 1
1728 std::string EXPRT cm_get_client_name();
1729 INT EXPRT cm_check_client(HNDLE hDB, HNDLE hKeyClient);
1730 INT EXPRT cm_set_watchdog_params(BOOL call_watchdog, DWORD timeout);
1731 INT EXPRT cm_get_watchdog_params(BOOL * call_watchdog, DWORD * timeout);
1732 INT EXPRT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD * timeout, DWORD * last);
1733 INT EXPRT cm_watchdog_thread(void*unused);
1736 [[deprecated("Please remove the bUnique argument from this function. only bUnique set to TRUE is supported")]]
1737 INT EXPRT cm_shutdown(const char *name, BOOL bUnique);
1738 INT EXPRT cm_shutdown(const char *name);
1739 INT EXPRT cm_exist(const char *name, BOOL bClientName);
1740 INT EXPRT cm_cleanup(const char *client_name, BOOL ignore_timeout);
1741 INT EXPRT cm_yield(INT millisec);
1742#define HAVE_CM_PERIODIC_TASKS 1
1744 INT EXPRT cm_execute(const char *command, char *result, INT buf_size);
1746 [[deprecated("Please use the std::string version of this function")]]
1747 INT EXPRT cm_asctime(char *str, INT buf_size);
1748 std::string EXPRT cm_asctime();
1749 INT EXPRT cm_time(DWORD * t);
1751 void EXPRT cm_ack_ctrlc_pressed(void);
1752 INT EXPRT cm_exec_script(const char* odb_path_to_script);
1753 int EXPRT cm_write_event_to_odb(HNDLE hDB, HNDLE hKey, const EVENT_HEADER* pevent, INT format);
1754
1755 INT EXPRT cm_set_msg_print(INT system_mask, INT user_mask, int (*func) (const char *));
1756 INT EXPRT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format, ...) MATTRPRINTF(5,6);
1757 INT EXPRT cm_msg1(INT message_type, const char *filename, INT line, const char *facility, const char *routine, const char *format, ...) MATTRPRINTF(6,7);
1760 INT EXPRT cm_msg_retrieve(INT n_message, char *message, INT buf_size);
1761 INT EXPRT cm_msg_retrieve2(const char *facility, time_t t, int min_messages, char** messages, int* num_messages);
1763 void EXPRT cm_msg_get_logfile(const char *facility, time_t t, std::string* filename, std::string* linkname, std::string* linktarget);
1767
1768 BOOL EXPRT equal_ustring(const char *str1, const char *str2);
1769 BOOL EXPRT ends_with_ustring(const char *str, const char *suffix);
1770 bool EXPRT ends_with_char(const std::string& s, char c);
1771 BOOL EXPRT strmatch(char* pattern, char*str);
1772 void EXPRT strarrayindex(char* odbpath, int* index1, int* index2);
1773 std::string msprintf(const char *format, ...) MATTRPRINTF(1,2);
1774
1775 std::string cm_expand_env(const char* str);
1776
1777 /*---- buffer manager ----*/
1778 INT EXPRT bm_open_buffer(const char *buffer_name, INT buffer_size, INT * buffer_handle);
1779 INT EXPRT bm_get_buffer_handle(const char *buffer_name, INT * buffer_handle);
1780 INT EXPRT bm_close_buffer(INT buffer_handle);
1782 INT EXPRT bm_init_buffer_counters(INT buffer_handle);
1783 INT EXPRT bm_get_buffer_info(INT buffer_handle, BUFFER_HEADER * buffer_header);
1784 INT EXPRT bm_get_buffer_level(INT buffer_handle, INT * n_bytes);
1785 INT EXPRT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size);
1786 INT EXPRT bm_compose_event(EVENT_HEADER * event_header, short int event_id, short int trigger_mask, DWORD data_size, DWORD serial);
1787 INT EXPRT bm_compose_event_threadsafe(EVENT_HEADER *event_header, short int event_id, short int trigger_mask, DWORD data_size, DWORD *serial);
1788 INT EXPRT bm_match_event(short int event_id, short int trigger_mask, const EVENT_HEADER *pevent);
1789 INT EXPRT bm_request_event(INT buffer_handle,
1790 short int event_id,
1791 short int trigger_mask,
1792 INT sampling_type,
1793 INT * request_id,
1794 EVENT_HANDLER *func
1795 );
1796 INT EXPRT bm_add_event_request(INT buffer_handle,
1797 short int event_id,
1798 short int trigger_mask,
1799 INT sampling_type,
1800 EVENT_HANDLER *func,
1801 INT request_id);
1802 INT EXPRT bm_remove_event_request(INT buffer_handle, INT request_id);
1803 INT EXPRT bm_delete_request(INT request_id);
1804 INT EXPRT bm_send_event(INT buffer_handle, const EVENT_HEADER* event, int unused, int timeout_msec);
1805#define HAVE_BM_SEND_EVENT_VEC 1
1806 INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector<char>& event, int timeout_msec);
1807 INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector<std::vector<char>>& event, int timeout_msec);
1808 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);
1809 INT EXPRT bm_receive_event(INT buffer_handle, void *destination, INT * buf_size, int timeout_msec);
1810#define HAVE_BM_RECEIVE_EVENT_VEC 1
1811 INT EXPRT bm_receive_event_vec(INT buffer_handle, std::vector<char> *event, int timeout_msec);
1812#define HAVE_BM_RECEIVE_EVENT_ALLOC 1
1813 INT EXPRT bm_receive_event_alloc(INT buffer_handle, EVENT_HEADER** ppevent, int timeout_msec);
1814 INT EXPRT bm_skip_event(INT buffer_handle);
1815 INT EXPRT bm_flush_cache(INT buffer_handle, int timeout_msec);
1816 INT EXPRT bm_poll_event(void);
1820
1824 /*---- online database functions -----*/
1825 INT EXPRT db_open_database(const char *database_name, INT database_size, HNDLE * hdb, const char *client_name);
1826 INT EXPRT db_close_database(HNDLE database_handle);
1828 INT EXPRT db_protect_database(HNDLE database_handle);
1829
1830 INT EXPRT db_create_key(HNDLE hdb, HNDLE key_handle, const char *key_name, DWORD type);
1831 INT EXPRT db_create_link(HNDLE hdb, HNDLE key_handle, const char *link_name, const char *destination);
1832 INT EXPRT db_set_value(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, const void *data, INT size, INT num_values, DWORD type);
1833 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);
1834 INT EXPRT db_get_value(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, void *data, INT * size, DWORD type, BOOL create);
1835 INT EXPRT db_resize_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, int num_values, int max_string_size);
1836#define HAVE_DB_GET_VALUE_STRING_CREATE_STRING_LENGTH 1
1837 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);
1838 INT EXPRT db_set_value_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string* s);
1839 INT EXPRT db_find_key(HNDLE hdb, HNDLE hkey, const char *name, HNDLE * hsubkey);
1840 INT EXPRT db_find_link(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE * subhKey);
1841 //INT EXPRT db_find_key1(HNDLE hdb, HNDLE hkey, const char *name, HNDLE * hsubkey);
1842 //INT EXPRT db_find_link1(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE * subhKey);
1843 INT EXPRT db_find_keys(HNDLE hDB, HNDLE hKey, const char *odbpath, std::vector<HNDLE> &hKeyVector);
1844 INT EXPRT db_get_parent(HNDLE hDB, HNDLE hKey, HNDLE * parenthKey);
1845 INT EXPRT db_scan_tree(HNDLE hDB, HNDLE hKey, int level, INT(*callback) (HNDLE, HNDLE, KEY *, INT, void *), void *info);
1846 INT EXPRT db_scan_tree_link(HNDLE hDB, HNDLE hKey, int level, void (*callback) (HNDLE, HNDLE, KEY *, INT, void *), void *info);
1847 [[deprecated("Please use the std::string version of this function")]]
1848 INT EXPRT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size);
1849 std::string EXPRT db_get_path(HNDLE hDB, HNDLE hKey);
1850 [[deprecated("Please remove the \"follow_links\" argument from this function")]]
1851 INT EXPRT db_delete_key(HNDLE database_handle, HNDLE key_handle, BOOL follow_links);
1852 INT EXPRT db_delete_key(HNDLE database_handle, HNDLE key_handle);
1853 INT EXPRT db_delete(HNDLE database_handle, HNDLE hKeyRoot, const char* name);
1854 INT EXPRT db_enum(HNDLE hdb, HNDLE key_handle, std::vector<HNDLE>* sub_handles, std::vector<KEY>* sub_keys, bool follow_links = true);
1855 INT EXPRT db_enum(HNDLE hdb, HNDLE root_handle, const char* odb_path, std::vector<HNDLE>* sub_handles, std::vector<KEY>* sub_keys, bool follow_links = true);
1856 INT EXPRT db_enum_key(HNDLE hdb, HNDLE key_handle, INT index, HNDLE * subkey_handle);
1857 INT EXPRT db_enum_link(HNDLE hdb, HNDLE key_handle, INT index, HNDLE * subkey_handle);
1858 INT EXPRT db_get_next_link(HNDLE hdb, HNDLE key_handle, HNDLE * subkey_handle);
1859 INT EXPRT db_get_key(HNDLE hdb, HNDLE key_handle, KEY * key);
1860 INT EXPRT db_get_link(HNDLE hdb, HNDLE key_handle, KEY * key);
1861 INT EXPRT db_get_key_info(HNDLE hDB, HNDLE hKey, char *name, INT name_size, INT * type, INT * num_values, INT * item_size);
1862 INT EXPRT db_get_key_time(HNDLE hdb, HNDLE key_handle, DWORD * delta);
1863 INT EXPRT db_rename_key(HNDLE hDB, HNDLE hKey, const char *name);
1865 INT EXPRT db_get_data(HNDLE hdb, HNDLE key_handle, void *data, INT * buf_size, DWORD type);
1866 INT EXPRT db_get_link_data(HNDLE hdb, HNDLE key_handle, void *data, INT * buf_size, DWORD type);
1867 INT EXPRT db_get_data1(HNDLE hDB, HNDLE hKey, void *data, INT * buf_size, DWORD type, INT * num_values);
1869 INT EXPRT db_set_data(HNDLE hdb, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1870 INT EXPRT db_set_data1(HNDLE hdb, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1872 INT EXPRT db_set_link_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type);
1875 INT EXPRT db_set_data_index1(HNDLE hDB, HNDLE hKey, const void *data, INT size, INT index, DWORD type, BOOL bNotify);
1877 INT EXPRT db_merge_data(HNDLE hDB, HNDLE hKeyRoot, const char *name, void *data, INT data_size, INT num_values, INT type);
1878 INT EXPRT db_set_mode(HNDLE hdb, HNDLE key_handle, WORD mode, BOOL recurse);
1879 INT EXPRT db_create_record(HNDLE hdb, HNDLE hkey, const char *name, const char *init_str);
1880 INT EXPRT db_check_record(HNDLE hDB, HNDLE hKey, const char *key_name, const char *rec_str, BOOL correct);
1881 INT EXPRT db_open_record(HNDLE hdb, HNDLE hkey, void *ptr, INT rec_size, WORD access, void (*dispatcher) (INT, INT, void *), void *info);
1882 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);
1884 INT EXPRT db_get_record(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align);
1885 INT EXPRT db_get_record1(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align, const char *rec_str);
1886 INT EXPRT db_get_record2(HNDLE hdb, HNDLE hKey, void *data, INT * buf_size, INT align, const char *rec_str, BOOL correct);
1887 INT EXPRT db_get_record_size(HNDLE hdb, HNDLE hKey, INT align, INT * buf_size);
1888 INT EXPRT db_set_record(HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align);
1889 INT EXPRT db_set_record2(HNDLE hdb, HNDLE hKey, void *data, INT buf_size, INT align, const char *rec_str);
1891 INT EXPRT db_get_open_records(HNDLE hDB, HNDLE hKey, char *str, INT buf_size, BOOL fix);
1892
1895
1896 INT EXPRT db_watch(HNDLE hDB, HNDLE hKey, void (*dispatcher) (INT, INT, INT, void *info), void *info);
1898 INT EXPRT db_unwatch_all(void);
1899
1900 INT EXPRT db_load(HNDLE hdb, HNDLE key_handle, const char *filename, BOOL bRemote);
1901 INT EXPRT db_save(HNDLE hdb, HNDLE key_handle, const char *filename, BOOL bRemote);
1902 INT EXPRT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT * buffer_size, const char *path);
1903 INT EXPRT db_paste(HNDLE hDB, HNDLE hKeyRoot, const char *buffer);
1904 INT EXPRT db_paste_xml(HNDLE hDB, HNDLE hKeyRoot, const char *buffer);
1905 INT EXPRT db_save_struct(HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append);
1906 INT EXPRT db_save_string(HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append);
1908 INT EXPRT db_copy_xml(HNDLE hDB, HNDLE hKey, char *buffer, int *buffer_size, bool header);
1909
1911 INT EXPRT db_load_json(HNDLE hdb, HNDLE key_handle, const char *filename);
1912 void EXPRT json_write(char **buffer, int* buffer_size, int* buffer_end, int level, const char* s, int quoted);
1913 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);
1914
1915 /* db_copy_json() is obsolete, use db_copy_json_save, _values and _ls instead */
1916 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);
1917
1918 /* json encoder using the "ODB save" encoding, for use with "ODB load" and db_paste_json() */
1919 INT EXPRT db_copy_json_save(HNDLE hDB, HNDLE hKey, char **buffer, int* buffer_size, int* buffer_end);
1920 /* json encoder using the "ls" format, for getting the contents of a single ODB subdirectory */
1921 INT EXPRT db_copy_json_ls(HNDLE hDB, HNDLE hKey, char **buffer, int* buffer_size, int* buffer_end);
1922 /* json encoder using the "get_values" format, for resolving links and normalized ODB path names (converted to lower-case) */
1923 INT EXPRT 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);
1924 /* json encoder for an ODB array */
1925 INT EXPRT db_copy_json_array(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end);
1926 /* json encoder for a single element of an ODB array */
1927 INT EXPRT db_copy_json_index(HNDLE hDB, HNDLE hKey, int index, char **buffer, int *buffer_size, int *buffer_end);
1928
1929 INT EXPRT db_paste_json(HNDLE hDB, HNDLE hKey, const char *buffer);
1930 INT EXPRT db_paste_json_node(HNDLE hDB, HNDLE hKey, int index, const MJsonNode* json_node);
1931
1932 MJsonNode* EXPRT db_sor(HNDLE hDB, const char* path); // show open records
1933 MJsonNode* EXPRT db_scl(HNDLE hDB); // show clients
1934
1935 [[deprecated("Please use the std::string version of this function")]]
1936 INT EXPRT db_sprintf(char *string, const void *data, INT data_size, INT index, DWORD type);
1937 [[deprecated("Please use the std::string version of this function")]]
1938 INT EXPRT db_sprintff(char *string, const char *format, const void *data, INT data_size, INT index, DWORD type);
1939 [[deprecated("Please use the std::string version of this function")]]
1940 INT EXPRT db_sprintfh(char *string, const void *data, INT data_size, INT index, DWORD type);
1941 std::string EXPRT db_sprintf(const void *data, INT data_size, INT index, DWORD type);
1942 std::string EXPRT db_sprintff(const char *format, const void *data, INT data_size, INT index, DWORD type);
1943 std::string EXPRT db_sprintfh(const void *data, INT data_size, INT index, DWORD type);
1944 INT EXPRT db_sscanf(const char *string, void *data, INT * data_size, INT index, DWORD type);
1945 INT db_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD * timeout, DWORD * last);
1948
1949 [[deprecated("Please use the std::string version of this function")]]
1950 char EXPRT *strcomb(const char **list);
1951 std::string EXPRT strcomb1(const char **list);
1952
1955 /*---- Bank routines ----*/
1956 void EXPRT bk_init(void *pbh);
1957 void EXPRT bk_init32(void *event);
1958 void EXPRT bk_init32a(void *event);
1959 BOOL EXPRT bk_is32(const void *event);
1960 BOOL EXPRT bk_is32a(const void *event);
1961 INT EXPRT bk_size(const void *pbh);
1962 void EXPRT bk_create(void *pbh, const char *name, WORD type, void **pdata);
1963 INT EXPRT bk_delete(void *event, const char *name);
1964 INT EXPRT bk_close(void *pbh, void *pdata);
1965 INT EXPRT bk_list(const void *pbh, char *bklist);
1966 INT EXPRT bk_locate(const void *pbh, const char *name, void *pdata);
1967 INT EXPRT bk_iterate(const void *pbh, BANK ** pbk, void *pdata);
1968 INT EXPRT bk_iterate32(const void *pbh, BANK32 ** pbk, void *pdata);
1969 INT EXPRT bk_iterate32a(const void *pbh, BANK32A ** pbk, void *pdata);
1970 INT EXPRT bk_copy(char * pevent, char * psrce, const char * bkname);
1971 INT EXPRT bk_swap(void *event, BOOL force);
1972 INT EXPRT bk_find(const BANK_HEADER * pbkh, const char *name, DWORD * bklen, DWORD * bktype, void **pdata);
1973
1974 /*---- RPC routines ----*/
1976 INT EXPRT rpc_add_allowed_host(const char* hostname);
1977 INT EXPRT rpc_check_allowed_host(const char* hostname);
1978
1979 INT EXPRT rpc_register_functions(const RPC_LIST * new_list, RPC_HANDLER func);
1983 INT EXPRT rpc_set_timeout(HNDLE hConn, int timeout_msec, int* old_timeout_msec = NULL);
1984 INT EXPRT rpc_set_name(const char *name);
1985 std::string rpc_get_name();
1986 bool EXPRT rpc_is_remote(void);
1987 bool EXPRT rpc_is_connected(void);
1988 std::string rpc_get_mserver_hostname();
1989 bool EXPRT rpc_is_mserver(void);
1990 INT EXPRT rpc_set_debug(void (*func) (const char *), INT mode);
1991 void EXPRT rpc_debug_printf(const char *format, ...);
1992
1993 INT EXPRT rpc_register_server(int port, int *plsock, int *pport);
1997 INT EXPRT rpc_client_call(HNDLE hConn, DWORD routine_id, ...);
1998 INT EXPRT rpc_call(DWORD routine_id, ...);
2000 const char EXPRT *rpc_tid_name(INT id);
2001 const char EXPRT *rpc_tid_name_old(INT id);
2002 INT EXPRT rpc_name_tid(const char* name); // inverse of rpc_tid_name()
2003 INT EXPRT rpc_server_connect(const char *host_name, const char *exp_name);
2004 INT EXPRT rpc_client_connect(const char *host_name, INT midas_port, const char *client_name, HNDLE * hConnection);
2005 INT EXPRT rpc_client_disconnect(HNDLE hConn, BOOL bShutdown);
2006
2007 INT EXPRT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode);
2009
2010 INT EXPRT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event);
2011 INT EXPRT rpc_send_event_sg(INT buffer_handle, int sg_n, const char* const sg_ptr[], const size_t sg_len[]);
2012
2014
2015 void EXPRT rpc_get_convert_flags(INT * convert_flags);
2016 void EXPRT rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags);
2017 void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags);
2018
2022 /*---- system services ----*/
2023 DWORD EXPRT ss_millitime(void);
2024 DWORD EXPRT ss_time(void);
2025 double EXPRT ss_time_sec(void);
2026 DWORD EXPRT ss_settime(DWORD seconds);
2027 void EXPRT ss_tzset();
2028 time_t EXPRT ss_mktime(struct tm* tms);
2029 std::string EXPRT ss_asctime(void);
2030 INT EXPRT ss_sleep(INT millisec);
2031 BOOL EXPRT ss_kbhit(void);
2032 std::string EXPRT ss_getcwd();
2033
2034 double EXPRT ss_nan(void);
2035 int EXPRT ss_isnan(double x);
2036 int EXPRT ss_isfin(double x);
2037
2038 void EXPRT ss_clear_screen(void);
2039 void EXPRT ss_printf(INT x, INT y, const char *format, ...);
2040 void ss_set_screen_size(int x, int y);
2041
2042 char EXPRT *ss_getpass(const char *prompt);
2043 INT EXPRT ss_getchar(BOOL reset);
2044 char EXPRT *ss_crypt(const char *key, const char *salt);
2045 char EXPRT *ss_gets(char *string, int size);
2046
2047 void EXPRT *ss_ctrlc_handler(void (*func) (int));
2048
2049 INT EXPRT ss_write_tcp(int sock, const char *buffer, size_t buffer_size);
2050
2051 /*---- direct io routines ----*/
2054
2055 /*---- tape routines ----*/
2056 INT EXPRT ss_tape_open(char *path, INT oflag, INT * channel);
2058 INT EXPRT ss_tape_status(char *path);
2059 INT EXPRT ss_tape_read(INT channel, void *pdata, INT * count);
2060 INT EXPRT ss_tape_write(INT channel, void *pdata, INT count);
2069
2070 /*---- disk routines ----*/
2071 double EXPRT ss_disk_free(const char *path);
2072 double EXPRT ss_file_size(const char *path);
2073 time_t EXPRT ss_file_time(const char *path);
2074 INT EXPRT ss_dir_exist(const char *path);
2075 INT EXPRT ss_file_exist(const char *path);
2076 INT EXPRT ss_file_link_exist(const char *path);
2077 INT EXPRT ss_file_remove(const char *path);
2078 INT EXPRT ss_file_find(const char *path, const char *pattern, char **plist);
2079 INT EXPRT ss_dir_find(const char *path, const char *pattern, char **plist);
2080 INT EXPRT ss_dirlink_find(const char *path, const char *pattern, char **plist);
2081 INT EXPRT ss_file_find(const char *path, const char *pattern, STRING_LIST*);
2082 INT EXPRT ss_dir_find(const char *path, const char *pattern, STRING_LIST*);
2083 INT EXPRT ss_dirlink_find(const char *path, const char *pattern, STRING_LIST*);
2084 double EXPRT ss_disk_size(const char *path);
2085 int EXPRT ss_file_copy(const char *src, const char *dst, bool append = false);
2086
2087 /*---- UTF8 unicode ----*/
2088 bool ss_is_valid_utf8(const char* s);
2089 bool ss_repair_utf8(char* s);
2090 bool ss_repair_utf8(std::string& s);
2091
2094 /*---- ELog functions ----*/
2095 INT EXPRT el_retrieve(char *tag, char *date, int *run, char *author,
2096 char *type, char *system, char *subject,
2097 char *text, int *textsize, char *orig_tag,
2098 char *reply_tag, char *attachment1,
2099 char *attachment2, char *attachment3, char *encoding);
2100 INT EXPRT el_submit(int run, const char *author, const char *type, const char *system,
2101 const char *subject, const char *text, const char *reply_to,
2102 const char *encoding,
2103 const char *afilename1, const char *buffer1, INT buffer_size1,
2104 const char *afilename2, const char *buffer2, INT buffer_size2,
2105 const char *afilename3, const char *buffer3, INT buffer_size3,
2106 char *tag, INT tag_size);
2107 INT EXPRT el_search_message(char *tag, int *fh, BOOL walk, char* filename, int filename_size);
2108 INT EXPRT el_search_run(int run, char *return_tag);
2109 INT EXPRT el_delete_message(const char *tag);
2110
2111 /*---- alarm functions ----*/
2112 INT EXPRT al_check(void);
2113 INT EXPRT al_trigger_alarm(const char *alarm_name, const char *alarm_message,
2114 const char *default_class, const char *cond_str, INT type);
2115 INT EXPRT al_trigger_class(const char *alarm_class, const char *alarm_message, BOOL first);
2116 INT EXPRT al_reset_alarm(const char *alarm_name);
2117 BOOL EXPRT al_evaluate_condition(const char* alarm_name, const char *condition, std::string *pvalue);
2118 INT al_get_alarms(std::string *presult);
2119 INT EXPRT al_define_odb_alarm(const char *name, const char *condition, const char *aclass, const char *message);
2120
2121 /*---- analyzer functions ----*/
2122 void EXPRT test_register(ANA_TEST * t);
2123 void EXPRT add_data_dir(char *result, char *file);
2124 void EXPRT lock_histo(INT id);
2125
2126 void EXPRT open_subfolder(const char *name);
2127 void EXPRT close_subfolder(void);
2128
2129 /*---- image history functions ----*/
2130 int hs_image_retrieve(std::string image_name, time_t start, time_t stop,
2131 std::vector<time_t> &vtime, std::vector<std::string> &vfilename);
2132
2133#endif /* _MIDAS_H */
2134
/* end of msectionh */
2137/* emacs
2138 * Local Variables:
2139 * tab-width: 8
2140 * c-basic-offset: 3
2141 * indent-tabs-mode: nil
2142 * End:
2143 */
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:499
BOOL EXPRT al_evaluate_condition(const char *alarm_name, const char *condition, std::string *pvalue)
Definition alarm.cxx:259
INT EXPRT al_define_odb_alarm(const char *name, const char *condition, const char *aclass, const char *message)
Definition alarm.cxx:1001
INT al_get_alarms(std::string *presult)
Definition alarm.cxx:924
INT EXPRT al_reset_alarm(const char *alarm_name)
Definition alarm.cxx:605
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:396
INT EXPRT al_check(void)
Definition alarm.cxx:692
void EXPRT bk_init32a(void *event)
Definition midas.cxx:17999
INT EXPRT bk_close(void *pbh, void *pdata)
Definition midas.cxx:18297
INT EXPRT bk_iterate32a(const void *pbh, BANK32A **pbk, void *pdata)
Definition midas.cxx:18675
INT EXPRT bk_swap(void *event, BOOL force)
Definition midas.cxx:18729
BOOL EXPRT bk_is32a(const void *event)
Definition midas.cxx:17954
INT EXPRT bk_delete(void *event, const char *name)
Definition midas.cxx:18191
BOOL EXPRT bk_is32(const void *event)
Definition midas.cxx:17932
INT EXPRT bk_iterate32(const void *pbh, BANK32 **pbk, void *pdata)
Definition midas.cxx:18639
INT EXPRT bk_locate(const void *pbh, const char *name, void *pdata)
Definition midas.cxx:18406
void EXPRT bk_init(void *pbh)
Definition midas.cxx:17923
INT EXPRT bk_list(const void *pbh, char *bklist)
Definition midas.cxx:18357
INT EXPRT bk_copy(char *pevent, char *psrce, const char *bkname)
Definition midas.cxx:18121
INT EXPRT bk_iterate(const void *pbh, BANK **pbk, void *pdata)
Definition midas.cxx:18618
void EXPRT bk_init32(void *event)
Definition midas.cxx:17986
void EXPRT bk_create(void *pbh, const char *name, WORD type, void **pdata)
Definition midas.cxx:18078
INT EXPRT bk_find(const BANK_HEADER *pbkh, const char *name, DWORD *bklen, DWORD *bktype, void **pdata)
Definition midas.cxx:18509
INT EXPRT bk_size(const void *pbh)
Definition midas.cxx:18012
INT EXPRT bm_open_buffer(const char *buffer_name, INT buffer_size, INT *buffer_handle)
Definition midas.cxx:6782
INT EXPRT bm_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, int timeout_msec)
Definition midas.cxx:9791
INT EXPRT bm_write_statistics_to_odb(void)
Definition midas.cxx:7354
INT EXPRT bm_delete_request(INT request_id)
Definition midas.cxx:8697
INT EXPRT bm_close_all_buffers(void)
Definition midas.cxx:7317
INT EXPRT bm_poll_event(void)
Definition midas.cxx:11367
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:8427
INT EXPRT bm_receive_event_vec(INT buffer_handle, std::vector< char > *event, int timeout_msec)
Definition midas.cxx:11050
INT EXPRT bm_skip_event(INT buffer_handle)
Definition midas.cxx:11115
INT EXPRT bm_empty_buffers(void)
Definition midas.cxx:11481
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:8578
INT EXPRT bm_set_cache_size(INT buffer_handle, size_t read_size, size_t write_size)
Definition midas.cxx:8253
INT EXPRT bm_receive_event(INT buffer_handle, void *destination, INT *buf_size, int timeout_msec)
Definition midas.cxx:10891
INT EXPRT bm_check_buffers(void)
Definition midas.cxx:11195
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:8405
INT EXPRT bm_remove_event_request(INT buffer_handle, INT request_id)
Definition midas.cxx:8631
INT EXPRT bm_close_buffer(INT buffer_handle)
Definition midas.cxx:7170
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:9891
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:8394
INT EXPRT bm_match_event(short int event_id, short int trigger_mask, const EVENT_HEADER *pevent)
Definition midas.cxx:6087
INT EXPRT bm_flush_cache(INT buffer_handle, int timeout_msec)
Definition midas.cxx:10335
INT EXPRT bm_get_buffer_handle(const char *buffer_name, INT *buffer_handle)
Definition midas.cxx:7149
INT EXPRT bm_send_event_vec(INT buffer_handle, const std::vector< char > &event, int timeout_msec)
Definition midas.cxx:9818
INT EXPRT bm_receive_event_alloc(INT buffer_handle, EVENT_HEADER **ppevent, int timeout_msec)
Definition midas.cxx:10972
INT EXPRT cm_register_transition(INT transition, INT(*func)(INT, char *), int sequence_number)
Definition midas.cxx:3673
INT EXPRT cm_shutdown(const char *name, BOOL bUnique)
Definition midas.cxx:7474
INT EXPRT cm_disconnect_client(HNDLE hConn, BOOL bShutdown)
Definition midas.cxx:2905
INT EXPRT cm_yield(INT millisec)
Definition midas.cxx:5716
INT EXPRT cm_get_experiment_database(HNDLE *hDB, HNDLE *hKeyClient)
Definition midas.cxx:3083
INT EXPRT cm_list_experiments_remote(const char *host_name, STRING_LIST *exp_names)
Definition midas.cxx:2684
INT EXPRT cm_get_watchdog_params(BOOL *call_watchdog, DWORD *timeout)
Definition midas.cxx:3397
INT EXPRT cm_connect_client(const char *client_name, HNDLE *hConn)
Definition midas.cxx:2838
INT EXPRT cm_connect_experiment(const char *host_name, const char *exp_name, const char *client_name, void(*func)(char *))
Definition midas.cxx:2352
INT EXPRT cm_list_experiments_local(STRING_LIST *exp_names)
Definition midas.cxx:2658
INT EXPRT cm_start_watchdog_thread(void)
Definition midas.cxx:7429
INT EXPRT cm_get_experiment_semaphore(INT *semaphore_alarm, INT *semaphore_elog, INT *semaphore_history, INT *semaphore_msg)
Definition midas.cxx:3105
INT EXPRT cm_set_client_run_state(INT state)
Definition midas.cxx:3863
INT EXPRT cm_transition(INT transition, INT run_number, char *error, INT strsize, INT async_flag, INT debug_flag)
Definition midas.cxx:5360
INT EXPRT cm_stop_watchdog_thread(void)
Definition midas.cxx:7444
std::string EXPRT cm_asctime()
Definition midas.cxx:1462
INT EXPRT cm_register_function(INT id, INT(*func)(INT, void **))
Definition midas.cxx:5862
INT EXPRT cm_exist(const char *name, BOOL bClientName)
Definition midas.cxx:7594
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:2371
INT EXPRT cm_check_client(HNDLE hDB, HNDLE hKeyClient)
Definition midas.cxx:1919
INT EXPRT cm_periodic_tasks(void)
Definition midas.cxx:5653
INT EXPRT cm_select_experiment_remote(const char *host_name, std::string *exp_name)
Definition midas.cxx:2791
INT EXPRT cm_register_server(void)
Definition midas.cxx:3532
void EXPRT cm_ack_ctrlc_pressed(void)
Definition midas.cxx:5530
INT EXPRT cm_execute(const char *command, char *result, INT buf_size)
Definition midas.cxx:5797
INT EXPRT cm_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
Definition midas.cxx:3416
INT EXPRT cm_cleanup(const char *client_name, BOOL ignore_timeout)
Definition midas.cxx:7723
INT EXPRT cm_select_experiment_local(std::string *exp_name)
Definition midas.cxx:2742
std::string std::string cm_expand_env(const char *str)
Definition midas.cxx:7823
std::string EXPRT cm_get_client_name()
Definition midas.cxx:2133
INT EXPRT cm_exec_script(const char *odb_path_to_script)
Definition midas.cxx:5535
INT EXPRT cm_set_client_info(HNDLE hDB, HNDLE *hKeyClient, const char *host_name, const char *client_name, INT computer_id, const char *password, DWORD watchdog_timeout)
Definition midas.cxx:1943
INT EXPRT cm_get_exptab(const char *exp_name, char *expdir, int expdir_size, char *expuser, int expuser_size)
Definition midas.cxx:1880
INT EXPRT cm_disconnect_experiment(void)
Definition midas.cxx:2918
INT EXPRT cm_synchronize(DWORD *sec)
Definition midas.cxx:1419
std::string cm_get_exptab_filename()
Definition midas.cxx:1838
INT EXPRT cm_register_deferred_transition(INT transition, BOOL(*func)(INT, BOOL))
Definition midas.cxx:3917
INT EXPRT cm_set_experiment_local(const char *exp_name)
Definition midas.cxx:2240
INT EXPRT cm_get_environment(char *host_name, int host_name_size, char *exp_name, int exp_name_size)
Definition midas.cxx:2208
const char *EXPRT cm_get_version(void)
Definition midas.cxx:1526
INT EXPRT cm_deregister_transition(INT transition)
Definition midas.cxx:3749
INT EXPRT cm_check_deferred_transition(void)
Definition midas.cxx:3969
std::string cm_get_experiment_name()
Definition midas.cxx:1630
INT EXPRT cm_set_transition_sequence(INT transition, INT sequence_number)
Definition midas.cxx:3803
const char *EXPRT cm_get_revision(void)
Definition midas.cxx:1534
INT EXPRT cm_watchdog_thread(void *unused)
Definition midas.cxx:7403
INT EXPRT cm_set_experiment_database(HNDLE hDB, HNDLE hKeyClient)
Definition midas.cxx:3011
BOOL EXPRT cm_is_ctrlc_pressed(void)
Definition midas.cxx:5526
INT EXPRT cm_time(DWORD *t)
Definition midas.cxx:1484
INT EXPRT cm_transition_cleanup()
Definition midas.cxx:5341
INT EXPRT cm_set_watchdog_params(BOOL call_watchdog, DWORD timeout)
Definition midas.cxx:3355
INT EXPRT cm_set_experiment_semaphore(INT semaphore_alarm, INT semaphore_elog, INT semaphore_history, INT semaphore_msg)
Definition midas.cxx:3030
INT EXPRT el_search_run(int run, char *return_tag)
Definition elog.cxx:954
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:774
INT EXPRT el_delete_message(const char *tag)
Definition elog.cxx:1018
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:126
INT EXPRT el_search_message(char *tag, int *fh, BOOL walk, char *filename, int filename_size)
Definition elog.cxx:502
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
bool ss_is_valid_utf8(const char *string)
Definition system.cxx:8153
INT ss_dir_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6881
int ss_isnan(double x)
Definition system.cxx:8046
BOOL ss_kbhit()
Definition system.cxx:3743
double ss_disk_size(const char *path)
Definition system.cxx:7133
time_t ss_mktime(struct tm *tms)
Definition system.cxx:3444
DWORD ss_millitime()
Definition system.cxx:3472
int ss_file_exist(const char *path)
Definition system.cxx:7203
INT ss_tape_rskip(INT channel, INT count)
Definition system.cxx:6377
INT ss_tape_write(INT channel, void *pdata, INT count)
Definition system.cxx:6117
int ss_isfin(double x)
Definition system.cxx:8051
INT ss_dirlink_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6957
INT ss_getchar(BOOL reset)
Definition system.cxx:7588
INT ss_tape_rewind(INT channel)
Definition system.cxx:6433
INT ss_tape_fskip(INT channel, INT count)
Definition system.cxx:6317
INT ss_tape_close(INT channel)
Definition system.cxx:5987
double ss_disk_free(const char *path)
Definition system.cxx:6705
time_t ss_file_time(const char *path)
Definition system.cxx:7095
int ss_file_link_exist(const char *path)
Definition system.cxx:7239
std::string ss_getcwd()
Definition system.cxx:5855
INT ss_tape_get_blockn(INT channel)
Definition system.cxx:6653
double ss_file_size(const char *path)
Definition system.cxx:7057
INT ss_tape_status(char *path)
Definition system.cxx:6031
DWORD ss_settime(DWORD seconds)
Definition system.cxx:3554
INT ss_tape_mount(INT channel)
Definition system.cxx:6541
char * ss_getpass(const char *prompt)
Definition system.cxx:7525
INT ss_directio_give_port(INT start, INT end)
Definition system.cxx:7896
void ss_tzset()
Definition system.cxx:3434
INT ss_write_tcp(int sock, const char *buffer, size_t buffer_size)
Definition system.cxx:5431
int ss_dir_exist(const char *path)
Definition system.cxx:7271
void ss_set_screen_size(int x, int y)
Definition system.cxx:7434
INT ss_tape_spool(INT channel)
Definition system.cxx:6485
INT ss_file_remove(const char *path)
Definition system.cxx:7037
INT ss_tape_read(INT channel, void *pdata, INT *count)
Definition system.cxx:6177
int ss_file_copy(const char *src, const char *dst, bool append)
Definition system.cxx:7304
DWORD ss_time()
Definition system.cxx:3541
std::string ss_asctime()
Definition system.cxx:3628
double ss_time_sec()
Definition system.cxx:3546
INT ss_sleep(INT millisec)
Definition system.cxx:3707
INT ss_tape_unmount(INT channel)
Definition system.cxx:6597
double ss_nan()
Definition system.cxx:8025
INT ss_tape_write_eof(INT channel)
Definition system.cxx:6251
bool ss_repair_utf8(char *string)
Definition system.cxx:8236
void ss_clear_screen()
Definition system.cxx:7384
char * ss_crypt(const char *buf, const char *salt)
Definition system.cxx:7976
INT ss_tape_open(char *path, INT oflag, INT *channel)
Definition system.cxx:5896
void ss_printf(INT x, INT y, const char *format,...)
Definition system.cxx:7467
INT ss_directio_lock_port(INT start, INT end)
Definition system.cxx:7932
char * ss_gets(char *string, int size)
Definition system.cxx:7855
void * ss_ctrlc_handler(void(*func)(int))
Definition system.cxx:3978
INT ss_file_find(const char *path, const char *pattern, char **plist)
Definition system.cxx:6798
INT EXPRT cm_msg_early_init(void)
Definition midas.cxx:485
INT EXPRT cm_msg_facilities(STRING_LIST *list)
Definition midas.cxx:522
INT EXPRT cm_msg_open_buffer(void)
Definition midas.cxx:492
INT EXPRT cm_msg_close_buffer(void)
Definition midas.cxx:505
INT EXPRT cm_msg_register(EVENT_HANDLER *func)
Definition midas.cxx:1075
INT EXPRT INT EXPRT INT EXPRT cm_msg_flush_buffer(void)
Definition midas.cxx:889
std::string cm_get_error(INT code)
Definition midas.cxx:473
INT EXPRT cm_msg_retrieve(INT n_message, char *message, INT buf_size)
Definition midas.cxx:1381
INT EXPRT cm_msg_retrieve2(const char *facility, time_t t, int min_messages, char **messages, int *num_messages)
Definition midas.cxx:1311
void EXPRT cm_msg_get_logfile(const char *facility, time_t t, std::string *filename, std::string *linkname, std::string *linktarget)
Definition midas.cxx:557
INT EXPRT cm_set_msg_print(INT system_mask, INT user_mask, int(*func)(const char *))
Definition midas.cxx:665
BOOL EXPRT equal_ustring(const char *str1, const char *str2)
Definition odb.cxx:3780
INT db_sprintfh(char *string, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:11566
INT db_remove_open_record(HNDLE hDB, HNDLE hKey, BOOL lock)
Definition odb.cxx:13089
INT db_get_data_index(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT idx, DWORD type)
Definition odb.cxx:7412
INT db_delete_key(HNDLE hDB, HNDLE hKey, BOOL follow_links)
Definition odb.cxx:4428
INT db_send_changed_records()
Definition odb.cxx:14370
INT db_find_link(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4788
INT db_get_value(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, void *data, INT *buf_size, DWORD type, BOOL create)
Definition odb.cxx:5680
INT db_reorder_key(HNDLE hDB, HNDLE hKey, INT idx)
Definition odb.cxx:6880
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:1184
INT db_save_json(HNDLE hDB, HNDLE hKey, const char *filename, int flags)
Definition odb.cxx:11109
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:13883
INT db_open_database(const char *xdatabase_name, INT database_size, HNDLE *hDB, const char *client_name)
Definition odb.cxx:2315
INT db_get_open_records(HNDLE hDB, HNDLE hKey, char *str, INT buf_size, BOOL fix)
Definition odb.cxx:5450
INT db_paste_xml(HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
Definition odb.cxx:9511
std::string strcomb1(const char **list)
Definition odb.cxx:684
INT db_save_xml(HNDLE hDB, HNDLE hKey, const char *filename)
Definition odb.cxx:9998
INT db_set_link_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
Definition odb.cxx:7944
INT db_get_path(HNDLE hDB, HNDLE hKey, char *path, INT buf_size)
Definition odb.cxx:5270
INT db_get_record1(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align, const char *rec_str)
Definition odb.cxx:12395
INT db_copy(HNDLE hDB, HNDLE hKey, char *buffer, INT *buffer_size, const char *path)
Definition odb.cxx:8725
INT db_set_link_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:8268
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:3814
INT EXPRT db_enum(HNDLE hDB, HNDLE hKeyRoot, std::vector< HNDLE > *sub_handles, std::vector< KEY > *sub_keys, bool follow_links)
Definition odb.cxx:6263
INT db_get_record_size(HNDLE hDB, HNDLE hKey, INT align, INT *buf_size)
Definition odb.cxx:12201
INT db_get_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
Definition odb.cxx:7058
INT db_create_key(HNDLE hDB, HNDLE hKey, const char *key_name, DWORD type)
Definition odb.cxx:3887
INT db_check_record(HNDLE hDB, HNDLE hKey, const char *keyname, const char *rec_str, BOOL correct)
Definition odb.cxx:13564
INT db_copy_json_save(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:11057
INT db_copy_xml(HNDLE hDB, HNDLE hKey, char *buffer, int *buffer_size, bool header)
Definition odb.cxx:9550
MJsonNode * db_scl(HNDLE hDB)
Definition odb.cxx:14705
INT db_save_struct(HNDLE hDB, HNDLE hKey, const char *file_name, const char *struct_name, BOOL append)
Definition odb.cxx:11209
INT db_get_record(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, INT align)
Definition odb.cxx:12297
INT db_unwatch(HNDLE hDB, HNDLE hKey)
Definition odb.cxx:14481
INT db_set_mode(HNDLE hDB, HNDLE hKey, WORD mode, BOOL recurse)
Definition odb.cxx:8535
INT db_get_next_link(HNDLE hDB, HNDLE hKey, HNDLE *subkey_handle)
Definition odb.cxx:6081
INT db_scan_tree_link(HNDLE hDB, HNDLE hKey, INT level, void(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
Definition odb.cxx:5122
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:9758
INT db_scan_tree(HNDLE hDB, HNDLE hKey, INT level, INT(*callback)(HNDLE, HNDLE, KEY *, INT, void *), void *info)
Definition odb.cxx:5039
INT db_get_key(HNDLE hDB, HNDLE hKey, KEY *key)
Definition odb.cxx:6538
INT db_get_link(HNDLE hDB, HNDLE hKey, KEY *key)
Definition odb.cxx:6591
INT db_load(HNDLE hDB, HNDLE hKeyRoot, const char *filename, BOOL bRemote)
Definition odb.cxx:8634
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:14528
INT db_sprintff(char *string, const char *format, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:11502
INT db_get_watchdog_info(HNDLE hDB, const char *client_name, DWORD *timeout, DWORD *last)
Definition odb.cxx:3593
INT db_set_data_index(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:8163
INT db_save_string(HNDLE hDB, HNDLE hKey, const char *file_name, const char *string_name, BOOL append)
Definition odb.cxx:11270
INT db_copy_json_index(HNDLE hDB, HNDLE hKey, int index, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10803
INT db_paste(HNDLE hDB, HNDLE hKeyRoot, const char *buffer)
Definition odb.cxx:9000
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:6710
INT db_close_all_databases(void)
Definition odb.cxx:2893
INT db_set_data(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
Definition odb.cxx:7734
INT db_enum_link(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
Definition odb.cxx:5990
INT db_copy_json_ls(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:11003
char * strcomb(const char **list)
Definition odb.cxx:655
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:10966
INT db_delete(HNDLE hDB, HNDLE hKeyRoot, const char *odb_path)
Definition odb.cxx:4494
INT db_sprintf(char *string, const void *data, INT data_size, INT idx, DWORD type)
Definition odb.cxx:11426
INT db_update_last_activity(DWORD millitime)
Definition odb.cxx:3271
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:11090
void EXPRT strarrayindex(char *odbpath, int *index1, int *index2)
Definition odb.cxx:3852
INT db_set_data1(HNDLE hDB, HNDLE hKey, const void *data, INT buf_size, INT num_values, DWORD type)
Definition odb.cxx:7832
INT db_get_data1(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type, INT *num_values)
Definition odb.cxx:7275
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:11025
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:5523
INT db_find_key(HNDLE hDB, HNDLE hKey, const char *key_name, HNDLE *subhKey)
Definition odb.cxx:4751
INT db_copy_json_array(HNDLE hDB, HNDLE hKey, char **buffer, int *buffer_size, int *buffer_end)
Definition odb.cxx:10668
MJsonNode * db_sor(HNDLE hDB, const char *root_path)
Definition odb.cxx:14755
INT db_get_link_data(HNDLE hDB, HNDLE hKey, void *data, INT *buf_size, DWORD type)
Definition odb.cxx:7175
INT db_rename_key(HNDLE hDB, HNDLE hKey, const char *name)
Definition odb.cxx:6780
BOOL EXPRT ends_with_ustring(const char *str, const char *suffix)
Definition odb.cxx:3801
void json_write(char **buffer, int *buffer_size, int *buffer_end, int level, const char *s, int quoted)
Definition odb.cxx:10045
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:6651
int db_delete_client_info(HNDLE hDB, int pid)
Definition odb.cxx:3371
INT db_find_keys(HNDLE hDB, HNDLE hKeyRoot, const char *odbpath, std::vector< HNDLE > &hKeyVector)
Definition odb.cxx:4847
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:5630
INT db_notify_clients_array(HNDLE hDB, HNDLE hKeys[], INT size)
Definition odb.cxx:13215
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:14034
INT db_merge_data(HNDLE hDB, HNDLE hKeyRoot, const char *name, void *data, INT data_size, INT num_values, INT type)
Definition odb.cxx:8436
INT db_set_record(HNDLE hDB, HNDLE hKey, void *data, INT buf_size, INT align)
Definition odb.cxx:12881
INT db_set_data_index1(HNDLE hDB, HNDLE hKey, const void *data, INT data_size, INT idx, DWORD type, BOOL bNotify)
Definition odb.cxx:8339
INT db_enum_key(HNDLE hDB, HNDLE hKey, INT idx, HNDLE *subkey_handle)
Definition odb.cxx:5852
INT EXPRT db_resize_string(HNDLE hdb, HNDLE hKeyRoot, const char *key_name, int num_values, int max_string_length)
Definition odb.cxx:14619
INT db_close_record(HNDLE hDB, HNDLE hKey)
Definition odb.cxx:14066
INT db_create_record(HNDLE hDB, HNDLE hKey, const char *orig_key_name, const char *init_str)
Definition odb.cxx:13392
INT db_sscanf(const char *data_str, void *data, INT *data_size, INT i, DWORD tid)
Definition odb.cxx:11897
INT db_unwatch_all()
Definition odb.cxx:14511
INT db_add_open_record(HNDLE hDB, HNDLE hKey, WORD access_mode)
Definition odb.cxx:12954
INT EXPRT db_set_value_string(HNDLE hDB, HNDLE hKeyRoot, const char *key_name, const std::string *s)
Definition odb.cxx:14599
INT db_set_num_values(HNDLE hDB, HNDLE hKey, INT num_values)
Definition odb.cxx:8018
INT db_get_record2(HNDLE hDB, HNDLE hKey, void *data, INT *xbuf_size, INT align, const char *rec_str, BOOL correct)
Definition odb.cxx:12758
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:4183
INT db_close_database(HNDLE hDB)
Definition odb.cxx:2685
INT db_protect_database(HNDLE hDB)
Definition odb.cxx:3746
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:16707
void EXPRT rpc_convert_data(void *data, INT tid, INT flags, INT size, INT convert_flags)
Definition midas.cxx:11939
INT EXPRT rpc_client_connect(const char *host_name, INT midas_port, const char *client_name, HNDLE *hConnection)
Definition midas.cxx:12245
INT EXPRT rpc_register_server(int port, int *plsock, int *pport)
Definition midas.cxx:15086
INT EXPRT rpc_client_disconnect(HNDLE hConn, BOOL bShutdown)
Definition midas.cxx:12909
INT EXPRT rpc_client_call(HNDLE hConn, DWORD routine_id,...)
Definition midas.cxx:14028
INT EXPRT rpc_register_functions(const RPC_LIST *new_list, RPC_HANDLER func)
Definition midas.cxx:12060
INT EXPRT rpc_set_timeout(HNDLE hConn, int timeout_msec, int *old_timeout_msec=NULL)
Definition midas.cxx:13231
INT EXPRT rpc_server_connect(const char *host_name, const char *exp_name)
Definition midas.cxx:12614
std::string rpc_get_name()
Definition midas.cxx:13317
bool EXPRT rpc_is_remote(void)
Definition midas.cxx:12994
void EXPRT rpc_debug_printf(const char *format,...)
Definition midas.cxx:13394
const char EXPRT * rpc_tid_name_old(INT id)
Definition midas.cxx:12004
INT EXPRT cm_query_transition(int *transition, int *run_number, int *trans_time)
Definition midas.cxx:14670
INT EXPRT rpc_server_loop(void)
Definition midas.cxx:17315
INT EXPRT rpc_clear_allowed_hosts(void)
Definition midas.cxx:16682
INT EXPRT rpc_test_rpc()
Definition midas.cxx:16644
std::string rpc_get_mserver_hostname()
Definition midas.cxx:13038
INT EXPRT rpc_get_hw_type()
Definition midas.cxx:13067
bool EXPRT rpc_is_connected(void)
Definition midas.cxx:13016
INT EXPRT rpc_call(DWORD routine_id,...)
Definition midas.cxx:14217
const char EXPRT * rpc_tid_name(INT id)
Definition midas.cxx:11997
INT EXPRT rpc_flush_event(void)
Definition midas.cxx:14588
INT EXPRT rpc_register_client(const char *name, RPC_LIST *list)
Definition midas.cxx:12041
INT EXPRT rpc_server_shutdown(void)
Definition midas.cxx:17685
INT EXPRT rpc_send_event(INT buffer_handle, const EVENT_HEADER *event, int unused, INT async_flag, INT mode)
Definition midas.cxx:14451
INT EXPRT rpc_get_timeout(HNDLE hConn)
Definition midas.cxx:13206
INT EXPRT rpc_set_debug(void(*func)(const char *), INT mode)
Definition midas.cxx:13367
INT EXPRT rpc_name_tid(const char *name)
Definition midas.cxx:12011
bool EXPRT rpc_is_mserver(void)
Definition midas.cxx:13051
INT EXPRT rpc_send_event1(INT buffer_handle, const EVENT_HEADER *event)
Definition midas.cxx:14469
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:14475
INT EXPRT rpc_set_name(const char *name)
Definition midas.cxx:13341
INT rpc_get_convert_flags(void)
Definition midas.cxx:13263
INT EXPRT rpc_tid_size(INT id)
Definition midas.cxx:11990
INT EXPRT rpc_check_allowed_host(const char *hostname)
Definition midas.cxx:16736
void EXPRT rpc_convert_single(void *data, INT tid, INT flags, INT convert_flags)
Definition midas.cxx:11914
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
HNDLE hDB
main ODB handle
Definition mana.cxx:207
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
#define JSFLAG_RECURSE
Definition midas.h:1664
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:7951
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)
INT EXPRT bm_get_buffer_info(INT buffer_handle, BUFFER_HEADER *buffer_header)
Definition midas.cxx:7904
INT EXPRT bm_init_buffer_counters(INT buffer_handle)
Definition midas.cxx:8176
#define MAX_RPC_PARAMS
Definition midas.h:1531
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
std::string EXPRT cm_transition_name(int transition)
Definition midas.cxx:133
#define FALSE
Definition midas.h:183
INT EXPRT rpc_register_function(INT id, RPC_HANDLER func)
#define EXPRT
Definition midas.h:1676
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:1662
std::vector< std::string > STRING_LIST
Definition midas.h:246
int EXPRT cm_write_event_to_odb(HNDLE hDB, HNDLE hKey, const EVENT_HEADER *pevent, INT format)
Definition midas.cxx:19296
void EXPRT lock_histo(INT id)
Definition mana.cxx:3523
void EXPRT test_register(ANA_TEST *t)
Definition mana.cxx:546
#define trigger_mask
#define end
#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
Definition midas.h:1214
Definition midas.h:1027
char c
Definition system.cxx:1312
static te_expr * list(state *s)
Definition tinyexpr.c:567

◆ PAWC_NAME

#define PAWC_NAME   PAWC

Definition at line 1501 of file midas.h.

◆ POINTER_T

#define POINTER_T   int

Definition at line 166 of file midas.h.

◆ PTYPE

#define PTYPE   POINTER_T

Definition at line 170 of file midas.h.

◆ RPC_CXX

#define RPC_CXX   (1 << 6)

Definition at line 1521 of file midas.h.

◆ RPC_FIXARRAY

#define RPC_FIXARRAY   (1 << 3)

Definition at line 1518 of file midas.h.

◆ RPC_IN

#define RPC_IN   (1 << 0)

flags

Definition at line 1515 of file midas.h.

◆ RPC_MAX_ID

#define RPC_MAX_ID   9999

Definition at line 1543 of file midas.h.

◆ RPC_MIN_ID

#define RPC_MIN_ID   1

IDs allow for users

Definition at line 1542 of file midas.h.

◆ RPC_OUT

#define RPC_OUT   (1 << 1)

Definition at line 1516 of file midas.h.

◆ RPC_OUTGOING

#define RPC_OUTGOING   (1 << 5)

Definition at line 1520 of file midas.h.

◆ RPC_POINTER

#define RPC_POINTER   (1 << 2)

Definition at line 1517 of file midas.h.

◆ RPC_VARARRAY

#define RPC_VARARRAY   (1 << 4)

Definition at line 1519 of file midas.h.

◆ RT_DATA

#define RT_DATA   (*((DWORD *) "HSDA"))

Definition at line 1356 of file midas.h.

◆ RT_DEF

#define RT_DEF   (*((DWORD *) "HSDF"))

Definition at line 1357 of file midas.h.

◆ RUNINFO_STR

#define RUNINFO_STR (   _name)
Value:
const char *_name[] = {\
"[.]",\
"State = INT : 1",\
"Online Mode = INT : 1",\
"Run number = INT : 0",\
"Transition in progress = INT : 0",\
"Start abort = INT : 0",\
"Requested transition = INT : 0",\
"Start time = STRING : [32] Tue Sep 09 15:04:42 1997",\
"Start time binary = DWORD : 0",\
"Stop time = STRING : [32] Tue Sep 09 15:04:42 1997",\
"Stop time binary = DWORD : 0",\
"",\
NULL }

Definition at line 1409 of file midas.h.

1409 {\
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 }

◆ SERIAL_NUMBER

#define SERIAL_NUMBER (   e)    ((((EVENT_HEADER *) e)-1)->serial_number)

SERIAL_NUMBER Extract or set/reset the serial number field pointed by the argument.

Parameters
epointer to the midas event (pevent)

Definition at line 881 of file midas.h.

◆ SET_TEST

#define SET_TEST (   t,
 
)    { if (!t.registered) test_register(&t); t.value = (v); }

Definition at line 1345 of file midas.h.

◆ STRING_BANKLIST_MAX

#define STRING_BANKLIST_MAX   BANKLIST_MAX * 4

for bk_list()

Definition at line 279 of file midas.h.

◆ TAPE_BUFFER_SIZE

#define TAPE_BUFFER_SIZE   0x8000

buffer size for taping data

Definition at line 264 of file midas.h.

◆ TEST

#define TEST (   t)    (t.value)

Definition at line 1346 of file midas.h.

◆ TIME_STAMP

#define TIME_STAMP (   e)    ((((EVENT_HEADER *) e)-1)->time_stamp)

TIME_STAMP Extract or set/reset the time stamp field pointed by the argument.

Parameters
epointer to the midas event (pevent)

Definition at line 888 of file midas.h.

◆ TRANSITION_ERROR_STRING_LENGTH

#define TRANSITION_ERROR_STRING_LENGTH   256

length of transition error string

Definition at line 280 of file midas.h.

◆ TRIGGER_MASK

#define TRIGGER_MASK (   e)    ((((EVENT_HEADER *) e)-1)->trigger_mask)

TRIGGER_MASK Extract or set the trigger mask field pointed by the argument.

Parameters
epointer to the midas event (pevent)

Definition at line 867 of file midas.h.

◆ TRUE

#define TRUE   1

Definition at line 182 of file midas.h.

◆ USE_HIDDEN_EQ

#define USE_HIDDEN_EQ

Use hidden equipment in status page

Definition at line 292 of file midas.h.

◆ WATCHDOG_INTERVAL

#define WATCHDOG_INTERVAL   1000

Definition at line 288 of file midas.h.

Typedef Documentation

◆ BOOL

typedef DWORD BOOL

Definition at line 105 of file midas.h.

◆ BYTE

typedef unsigned char BYTE

Definition at line 97 of file midas.h.

◆ DWORD

typedef unsigned int DWORD

Definition at line 100 of file midas.h.

◆ HISTORY

typedef struct history_struct HISTORY

◆ HNDLE

typedef INT HNDLE

Definition at line 132 of file midas.h.

◆ INT

typedef int INT

Definition at line 129 of file midas.h.

◆ INT16

typedef short INT16

Definition at line 139 of file midas.h.

◆ INT32

typedef int INT32

Definition at line 141 of file midas.h.

◆ INT64

typedef long long INT64

Definition at line 143 of file midas.h.

◆ INT8

typedef char INT8

Definition at line 137 of file midas.h.

◆ midas_thread_t

Definition at line 179 of file midas.h.

◆ MUTEX_T

typedef INT MUTEX_T

Definition at line 237 of file midas.h.

◆ PEQUIPMENT

typedef struct eqpmnt* PEQUIPMENT

Definition at line 1150 of file midas.h.

◆ STRING_LIST

typedef std::vector<std::string> STRING_LIST

Definition at line 246 of file midas.h.

◆ UINT16

typedef unsigned short UINT16

Definition at line 138 of file midas.h.

◆ UINT32

typedef unsigned int UINT32

Definition at line 140 of file midas.h.

◆ UINT64

typedef unsigned long long UINT64

Definition at line 142 of file midas.h.

◆ UINT8

typedef unsigned char UINT8

Definition at line 136 of file midas.h.

◆ WORD

typedef unsigned short int WORD

Definition at line 98 of file midas.h.

Function Documentation

◆ add_data_dir()

void EXPRT add_data_dir ( char *  result,
char *  file 
)

Definition at line 424 of file mana.cxx.

425{
426 HNDLE hDB, hkey;
427 char str[256];
428 int size;
429
431 db_find_key(hDB, 0, "/Logger/Data dir", &hkey);
432
433 if (hkey) {
434 size = sizeof(str);
435 db_get_data(hDB, hkey, str, &size, TID_STRING);
436 if (str[strlen(str) - 1] != DIR_SEPARATOR)
437 strcat(str, DIR_SEPARATOR_STR);
438 strcat(str, file);
439 strcpy(result, str);
440 } else
441 strcpy(result, file);
442}
#define TID_STRING
Definition midas.h:346
#define DIR_SEPARATOR
Definition midas.h:193
#define DIR_SEPARATOR_STR
Definition midas.h:194
Here is the call graph for this function:
Here is the caller graph for this function:

◆ bm_get_buffer_info()

INT EXPRT bm_get_buffer_info ( INT  buffer_handle,
BUFFER_HEADER buffer_header 
)

dox dox

Definition at line 7904 of file midas.cxx.

7926{
7927 if (rpc_is_remote())
7928 return rpc_call(RPC_BM_GET_BUFFER_INFO, buffer_handle, buffer_header);
7929
7930#ifdef LOCAL_ROUTINES
7931
7932 int status = 0;
7933 BUFFER *pbuf = bm_get_buffer("bm_get_buffer_info", buffer_handle, &status);
7934
7935 if (!pbuf)
7936 return status;
7937
7938 bm_lock_buffer_guard pbuf_guard(pbuf);
7939
7940 if (!pbuf_guard.is_locked())
7941 return pbuf_guard.get_status();
7942
7943 memcpy(buffer_header, pbuf->buffer_header, sizeof(BUFFER_HEADER));
7944
7945#endif /* LOCAL_ROUTINES */
7946
7947 return BM_SUCCESS;
7948}
static BUFFER * bm_get_buffer(const char *who, INT buffer_handle, int *pstatus)
Definition midas.cxx:6687
#define BM_SUCCESS
Definition midas.h:605
#define RPC_BM_GET_BUFFER_INFO
Definition mrpc.h:39
DWORD status
Definition odbhist.cxx:39
BUFFER_HEADER * buffer_header
Definition midas.h:993
Here is the call graph for this function:
Here is the caller graph for this function:

◆ bm_get_buffer_level()

INT EXPRT bm_get_buffer_level ( INT  buffer_handle,
INT n_bytes 
)

Definition at line 7951 of file midas.cxx.

7970{
7971 if (rpc_is_remote())
7972 return rpc_call(RPC_BM_GET_BUFFER_LEVEL, buffer_handle, n_bytes);
7973
7974#ifdef LOCAL_ROUTINES
7975 {
7976 int status = 0;
7977
7978 BUFFER *pbuf = bm_get_buffer("bm_get_buffer_level", buffer_handle, &status);
7979
7980 if (!pbuf)
7981 return status;
7982
7983 bm_lock_buffer_guard pbuf_guard(pbuf);
7984
7985 if (!pbuf_guard.is_locked())
7986 return pbuf_guard.get_status();
7987
7988 BUFFER_HEADER *pheader = pbuf->buffer_header;
7989
7990 BUFFER_CLIENT *pclient = bm_get_my_client_locked(pbuf_guard);
7991
7992 *n_bytes = pheader->write_pointer - pclient->read_pointer;
7993 if (*n_bytes < 0)
7994 *n_bytes += pheader->size;
7995
7996 pbuf_guard.unlock();
7997
7998 if (pbuf->read_cache_size) {
8000 if (status == BM_SUCCESS) {
8001 /* add bytes in cache */
8002 if (pbuf->read_cache_wp > pbuf->read_cache_rp)
8003 *n_bytes += pbuf->read_cache_wp - pbuf->read_cache_rp;
8004 pbuf->read_cache_mutex.unlock();
8005 }
8006 }
8007 }
8008#endif /* LOCAL_ROUTINES */
8009
8010 return BM_SUCCESS;
8011}
static BUFFER_CLIENT * bm_get_my_client_locked(bm_lock_buffer_guard &pbuf_guard)
Definition midas.cxx:6071
static int bm_lock_buffer_read_cache(BUFFER *pbuf)
Definition midas.cxx:8017
#define RPC_BM_GET_BUFFER_LEVEL
Definition mrpc.h:40
INT read_pointer
Definition midas.h:941
INT write_pointer
Definition midas.h:964
size_t read_cache_rp
Definition midas.h:997
std::timed_mutex read_cache_mutex
Definition midas.h:994
size_t read_cache_wp
Definition midas.h:998
std::atomic< size_t > read_cache_size
Definition midas.h:995
Here is the call graph for this function:
Here is the caller graph for this function:

◆ bm_init_buffer_counters()

INT EXPRT bm_init_buffer_counters ( INT  buffer_handle)

Definition at line 8176 of file midas.cxx.

8195{
8196 if (rpc_is_remote())
8197 return rpc_call(RPC_BM_INIT_BUFFER_COUNTERS, buffer_handle);
8198
8199#ifdef LOCAL_ROUTINES
8200
8201 int status = 0;
8202
8203 BUFFER* pbuf = bm_get_buffer("bm_init_buffer_counters", buffer_handle, &status);
8204
8205 if (!pbuf)
8206 return status;
8207
8208 bm_lock_buffer_guard pbuf_guard(pbuf);
8209
8210 if (!pbuf_guard.is_locked())
8211 return pbuf_guard.get_status();
8212
8213 pbuf->buffer_header->num_in_events = 0;
8214 pbuf->buffer_header->num_out_events = 0;
8215
8216#endif /* LOCAL_ROUTINES */
8217
8218 return BM_SUCCESS;
8219}
#define RPC_BM_INIT_BUFFER_COUNTERS
Definition mrpc.h:41
INT num_in_events
Definition midas.h:965
INT num_out_events
Definition midas.h:966
Here is the call graph for this function:
Here is the caller graph for this function:

◆ close_subfolder()

void EXPRT close_subfolder ( void  )
Here is the caller graph for this function:

◆ cm_msg()

INT EXPRT cm_msg ( INT  message_type,
const char *  filename,
INT  line,
const char *  routine,
const char *  format,
  ... 
)

◆ cm_msg1()

INT EXPRT INT EXPRT cm_msg1 ( INT  message_type,
const char *  filename,
INT  line,
const char *  facility,
const char *  routine,
const char *  format,
  ... 
)

◆ cm_transition_name()

std::string EXPRT cm_transition_name ( int  transition)

Definition at line 133 of file midas.cxx.

134{
135 if (transition == TR_START) return "START";
136 if (transition == TR_STOP) return "STOP";
137 if (transition == TR_PAUSE) return "PAUSE";
138 if (transition == TR_RESUME) return "RESUME";
139 if (transition == TR_STARTABORT) return "STARTABORT";
140 if (transition == TR_DEFERRED) return "DEFERRED";
141 return msprintf("UNKNOWN TRANSITION %d", transition);
142}
#define TR_RESUME
Definition midas.h:408
#define TR_PAUSE
Definition midas.h:407
#define TR_START
Definition midas.h:405
#define TR_STARTABORT
Definition midas.h:409
#define TR_DEFERRED
Definition midas.h:410
#define TR_STOP
Definition midas.h:406
std::string msprintf(const char *format,...)
Definition midas.cxx:419
Here is the call graph for this function:
Here is the caller graph for this function:

◆ cm_write_event_to_odb()

int EXPRT cm_write_event_to_odb ( HNDLE  hDB,
HNDLE  hKey,
const EVENT_HEADER pevent,
INT  format 
)

Definition at line 19296 of file midas.cxx.

19297{
19298 if (format == FORMAT_FIXED) {
19299 int status;
19300 status = db_set_record(hDB, hKey, (char *) (pevent + 1), pevent->data_size, 0);
19301 if (status != DB_SUCCESS) {
19302 cm_msg(MERROR, "cm_write_event_to_odb", "event %d ODB record size mismatch, db_set_record() status %d", pevent->event_id, status);
19303 return status;
19304 }
19305 return SUCCESS;
19306 } else if (format == FORMAT_MIDAS) {
19307 INT size, i, status, n_data;
19308 int n;
19309 char *pdata, *pdata0;
19310
19311 char name[5];
19312 BANK_HEADER *pbh;
19313 BANK *pbk;
19314 BANK32 *pbk32;
19315 BANK32A *pbk32a;
19316 DWORD bkname;
19317 WORD bktype;
19318 HNDLE hKeyRoot, hKeyl, *hKeys;
19319 KEY key;
19320
19321 pbh = (BANK_HEADER *) (pevent + 1);
19322 pbk = NULL;
19323 pbk32 = NULL;
19324 pbk32a = NULL;
19325
19326 /* count number of banks */
19327 for (n=0 ; ; n++) {
19328 if (bk_is32a(pbh)) {
19329 bk_iterate32a(pbh, &pbk32a, &pdata);
19330 if (pbk32a == NULL)
19331 break;
19332 } else if (bk_is32(pbh)) {
19333 bk_iterate32(pbh, &pbk32, &pdata);
19334 if (pbk32 == NULL)
19335 break;
19336 } else {
19337 bk_iterate(pbh, &pbk, &pdata);
19338 if (pbk == NULL)
19339 break;
19340 }
19341 }
19342
19343 /* build array of keys */
19344 hKeys = (HNDLE *)malloc(sizeof(HNDLE) * n);
19345
19346 pbk = NULL;
19347 pbk32 = NULL;
19348 n = 0;
19349 do {
19350 /* scan all banks */
19351 if (bk_is32a(pbh)) {
19352 size = bk_iterate32a(pbh, &pbk32a, &pdata);
19353 if (pbk32a == NULL)
19354 break;
19355 bkname = *((DWORD *) pbk32a->name);
19356 bktype = (WORD) pbk32a->type;
19357 } else if (bk_is32(pbh)) {
19358 size = bk_iterate32(pbh, &pbk32, &pdata);
19359 if (pbk32 == NULL)
19360 break;
19361 bkname = *((DWORD *) pbk32->name);
19362 bktype = (WORD) pbk32->type;
19363 } else {
19364 size = bk_iterate(pbh, &pbk, &pdata);
19365 if (pbk == NULL)
19366 break;
19367 bkname = *((DWORD *) pbk->name);
19368 bktype = (WORD) pbk->type;
19369 }
19370
19371 n_data = size;
19372 if (rpc_tid_size(bktype & 0xFF))
19373 n_data /= rpc_tid_size(bktype & 0xFF);
19374
19375 /* get bank key */
19376 *((DWORD *) name) = bkname; // NB: "name" is only byte-aligned, and may have wrong alignement for DWORD, flagged by UBSAN. K.O.
19377
19378 //name[0] = bkname>>0 & 0xFF;
19379 //name[1] = bkname>>8 & 0xFF;
19380 //name[2] = bkname>>16 & 0xFF;
19381 //name[3] = bkname>>24 & 0xFF;
19382 name[4] = 0;
19383
19384 //printf("bkname 0x%08x, name [%s]\n", bkname, name);
19385
19386 /* record the start of the data in case it is struct */
19387 pdata0 = pdata;
19388 if (bktype == TID_STRUCT) {
19389 status = db_find_key(hDB, hKey, name, &hKeyRoot);
19390 if (status != DB_SUCCESS) {
19391 cm_msg(MERROR, "cm_write_event_to_odb", "please define bank \"%s\" in BANK_LIST in frontend", name);
19392 continue;
19393 }
19394
19395 /* write structured bank */
19396 for (i = 0;; i++) {
19397 status = db_enum_key(hDB, hKeyRoot, i, &hKeyl);
19399 break;
19400
19401 db_get_key(hDB, hKeyl, &key);
19402
19403 /* adjust for alignment */
19404 if (key.type != TID_STRING && key.type != TID_LINK)
19405 pdata = (pdata0 + VALIGN(pdata-pdata0, MIN(ss_get_struct_align(), key.item_size)));
19406
19408 if (status != DB_SUCCESS) {
19409 cm_msg(MERROR, "cm_write_event_to_odb", "cannot write bank \"%s\" to ODB, db_set_data1() status %d", name, status);
19410 continue;
19411 }
19412 hKeys[n++] = hKeyl;
19413
19414 /* shift data pointer to next item */
19415 pdata += key.item_size * key.num_values;
19416 }
19417 } else {
19418 /* write variable length bank */
19419 status = db_find_key(hDB, hKey, name, &hKeyRoot);
19420 if (status != DB_SUCCESS) {
19421 status = db_create_key(hDB, hKey, name, bktype);
19422 if (status != DB_SUCCESS) {
19423 cm_msg(MERROR, "cm_write_event_to_odb", "cannot create key for bank \"%s\" with tid %d in ODB, db_create_key() status %d", name, bktype, status);
19424 continue;
19425 }
19426 status = db_find_key(hDB, hKey, name, &hKeyRoot);
19427 if (status != DB_SUCCESS) {
19428 cm_msg(MERROR, "cm_write_event_to_odb", "cannot find key for bank \"%s\" in ODB, after db_create_key(), db_find_key() status %d", name, status);
19429 continue;
19430 }
19431 }
19432 if (n_data > 0) {
19433 status = db_set_data1(hDB, hKeyRoot, pdata, size, n_data, bktype & 0xFF);
19434 if (status != DB_SUCCESS) {
19435 cm_msg(MERROR, "cm_write_event_to_odb", "cannot write bank \"%s\" to ODB, db_set_data1() status %d", name, status);
19436 }
19437 hKeys[n++] = hKeyRoot;
19438 }
19439 }
19440 } while (1);
19441
19442 /* notify all hot-lined clients in one go */
19443 db_notify_clients_array(hDB, hKeys, n*sizeof(INT));
19444
19445 free(hKeys);
19446
19447 return SUCCESS;
19448 } else {
19449 cm_msg(MERROR, "cm_write_event_to_odb", "event format %d is not supported (see midas.h definitions of FORMAT_xxx)", format);
19450 return CM_DB_ERROR;
19451 }
19452}
#define CM_DB_ERROR
Definition midas.h:585
#define DB_SUCCESS
Definition midas.h:632
#define DB_NO_MORE_SUBKEYS
Definition midas.h:647
#define SUCCESS
Definition mcstd.h:54
#define FORMAT_FIXED
Definition midas.h:314
#define TID_STRUCT
Definition midas.h:348
#define TID_LINK
Definition midas.h:350
#define MERROR
Definition midas.h:559
#define FORMAT_MIDAS
Definition midas.h:311
#define VALIGN(adr, align)
Definition midas.h:526
#define MIN(a, b)
Definition midas.h:515
INT ss_get_struct_align()
Definition system.cxx:1321
INT cm_msg(INT message_type, const char *filename, INT line, const char *routine, const char *format,...)
Definition midas.cxx:939
INT i
Definition mdump.cxx:32
char name[4]
Definition midas.h:1227
DWORD type
Definition midas.h:1228
char name[4]
Definition midas.h:1221
DWORD type
Definition midas.h:1222
char name[4]
Definition midas.h:1215
WORD type
Definition midas.h:1216
short int event_id
Definition midas.h:853
DWORD data_size
Definition midas.h:857
INT num_values
Definition midas.h:1029
DWORD type
Definition midas.h:1028
INT item_size
Definition midas.h:1033
Here is the call graph for this function:
Here is the caller graph for this function:

◆ dbg_calloc()

void * dbg_calloc ( unsigned int  size,
unsigned int  count,
char *  file,
int  line 
)

Definition at line 346 of file midas.cxx.

346 {
347 void *adr;
348
349 adr = dbg_malloc(size * count, file, line);
350 if (adr)
351 memset(adr, 0, size * count);
352
353 return adr;
354}
void * dbg_malloc(unsigned int size, char *file, int line)
Definition midas.cxx:306
Here is the call graph for this function:

◆ dbg_free()

void dbg_free ( void *  adr,
char *  file,
int  line 
)

Definition at line 356 of file midas.cxx.

356 {
357 FILE *f;
358 int i;
359
360 free(adr);
361
362 for (i = 0; i < _n_mem; i++)
363 if (_mem_loc[i].adr == adr)
364 break;
365
366 if (i < _n_mem)
367 _mem_loc[i].adr = NULL;
368
369 f = fopen("mem.txt", "w");
370
371 assert(f != NULL);
372
373 for (i = 0; i < _n_mem; i++)
374 if (_mem_loc[i].adr)
375 fprintf(f, "%s:%d %s:%d size=%d adr=%p\n", _mem_loc[i].file, _mem_loc[i].line,
376 file, line, _mem_loc[i].size, _mem_loc[i].adr);
377
378 fclose(f);
379}
static INT _n_mem
Definition midas.cxx:287
static DBG_MEM_LOC * _mem_loc
Definition midas.cxx:286
void * adr
Definition midas.cxx:280

◆ dbg_malloc()

void * dbg_malloc ( unsigned int  size,
char *  file,
int  line 
)

Definition at line 306 of file midas.cxx.

306 {
307 FILE *f;
308 void *adr;
309 int i;
310
311 adr = malloc(size);
312
313 /* search for deleted entry */
314 for (i = 0; i < _n_mem; i++)
315 if (_mem_loc[i].adr == NULL)
316 break;
317
318 if (i == _n_mem) {
319 _n_mem++;
320 if (!_mem_loc)
321 _mem_loc = (DBG_MEM_LOC *) malloc(sizeof(DBG_MEM_LOC));
322 else
323 _mem_loc = (DBG_MEM_LOC *) realloc(_mem_loc, sizeof(DBG_MEM_LOC) * _n_mem);
324 }
325
326 assert(_mem_loc != NULL);
327
328 _mem_loc[i].adr = adr;
329 _mem_loc[i].size = size;
330 strcpy(_mem_loc[i].file, file);
331 _mem_loc[i].line = line;
332
333 f = fopen("mem.txt", "w");
334
335 assert(f != NULL);
336
337 for (i = 0; i < _n_mem; i++)
338 if (_mem_loc[i].adr)
339 fprintf(f, "%s:%d size=%d adr=%p\n", _mem_loc[i].file, _mem_loc[i].line, _mem_loc[i].size, _mem_loc[i].adr);
340
341 fclose(f);
342
343 return adr;
344}
Here is the caller graph for this function:

◆ device_driver()

INT device_driver ( DEVICE_DRIVER device_driver,
INT  cmd,
  ... 
)

Definition at line 153 of file device_driver.cxx.

154{
155 va_list argptr;
156 HNDLE hKey;
157 INT channel, status, i, j;
158 float value, *pvalue;
159 char *name, *label;
160
161 va_start(argptr, cmd);
163
164 /* don't execute command if driver is disabled */
165 if (!device_drv->enabled)
167
168 switch (cmd) {
169 case CMD_INIT:
170 hKey = va_arg(argptr, HNDLE);
171
172 if (device_drv->flags & DF_MULTITHREAD) {
173 status = device_drv->dd(CMD_INIT, hKey, &device_drv->dd_info,
174 device_drv->channels, device_drv->flags,
175 device_drv->bd);
176
177 if (status == FE_SUCCESS && (device_drv->flags & DF_MULTITHREAD)) {
178 /* create inter-thread data exchange buffers */
179 device_drv->mt_buffer = (DD_MT_BUFFER *) calloc(1, sizeof(DD_MT_BUFFER));
180 device_drv->mt_buffer->n_channels = device_drv->channels;
181 device_drv->mt_buffer->channel = (DD_MT_CHANNEL *) calloc(device_drv->channels, sizeof(DD_MT_CHANNEL));
182 assert(device_drv->mt_buffer->channel);
183
184 /* initialize n_read for all channels */
185 for (i=0 ; i<device_drv->channels ; i++)
186 device_drv->mt_buffer->channel[i].n_read = 0;
187
188 /* set all get values to NaN */
189 for (i=0 ; i<device_drv->channels ; i++)
190 for (j=CMD_GET_FIRST ; j<=CMD_GET_LAST ; j++)
191 device_drv->mt_buffer->channel[i].variable[j] = (float) ss_nan();
192
193 /* set all set values to NaN */
194 for (i=0 ; i<device_drv->channels ; i++)
195 for (j=CMD_SET_FIRST ; j<=CMD_SET_LAST ; j++)
196 device_drv->mt_buffer->channel[i].variable[j] = (float)ss_nan();
197
198 /* get default names for this driver already now */
199 for (i = 0; i < device_drv->channels; i++) {
200 device_drv->dd(CMD_GET_LABEL, device_drv->dd_info, i,
201 device_drv->mt_buffer->channel[i].label);
202 }
203 /* create semaphore */
204 status = ss_mutex_create(&device_drv->mutex, FALSE);
205 if (status != SS_CREATED && status != SS_SUCCESS)
206 return FE_ERR_DRIVER;
208 }
209 } else {
210 status = device_drv->dd(CMD_INIT, hKey, &device_drv->dd_info,
211 device_drv->channels, device_drv->flags,
212 device_drv->bd);
213 }
214 break;
215
216 case CMD_START:
217 if (device_drv->flags & DF_MULTITHREAD && device_drv->mt_buffer != NULL) {
218 /* create dedicated thread for this device */
219 device_drv->mt_buffer->thread_id = ss_thread_create(sc_thread, device_drv);
220 }
221 break;
222
223 case CMD_CLOSE:
224 /* signal all threads to stop */
225 if (device_drv->flags & DF_MULTITHREAD && device_drv->mt_buffer != NULL)
226 device_drv->stop_thread = 1;
227 break;
228
229 case CMD_STOP:
230 if (device_drv->flags & DF_MULTITHREAD && device_drv->mt_buffer != NULL) {
231 if (device_drv->stop_thread == 0)
232 device_drv->stop_thread = 1;
233
234 /* wait for max. 10 seconds until thread has gracefully stopped */
235 for (i = 0; i < 1000; i++) {
236 if (device_drv->stop_thread == 2)
237 break;
238 ss_sleep(10);
239 }
240
241 /* if timeout expired, kill thread */
242 if (i == 1000)
243 ss_thread_kill(device_drv->mt_buffer->thread_id);
244
245 ss_mutex_delete(device_drv->mutex);
246 free(device_drv->mt_buffer->channel);
247 free(device_drv->mt_buffer);
248 }
249 break;
250
251 case CMD_EXIT:
252 status = device_drv->dd(CMD_EXIT, device_drv->dd_info);
253 break;
254
255 case CMD_SET_LABEL:
256 channel = va_arg(argptr, INT);
257 label = va_arg(argptr, char *);
258 status = device_drv->dd(CMD_SET_LABEL, device_drv->dd_info, channel, label);
259 break;
260
261 case CMD_GET_LABEL:
262 channel = va_arg(argptr, INT);
263 name = va_arg(argptr, char *);
264 status = device_drv->dd(CMD_GET_LABEL, device_drv->dd_info, channel, name);
265 break;
266
267 default:
268
269 if (cmd >= CMD_SET_FIRST && cmd <= CMD_SET_LAST) {
270
271 /* transfer data to sc_thread for SET commands */
272 channel = va_arg(argptr, INT);
273 value = (float) va_arg(argptr, double); // floats are passed as double
274 if (device_drv->flags & DF_MULTITHREAD) {
275 ss_mutex_wait_for(device_drv->mutex, 1000);
276 device_drv->mt_buffer->channel[channel].variable[cmd] = value;
277 status = device_drv->mt_buffer->status;
278 ss_mutex_release(device_drv->mutex);
279 } else {
280 status = device_drv->dd(cmd, device_drv->dd_info, channel, value);
281 }
282
283 } else if (cmd >= CMD_GET_FIRST && cmd <= CMD_GET_LAST) {
284
285 /* transfer data from sc_thread for GET commands */
286 channel = va_arg(argptr, INT);
287 pvalue = va_arg(argptr, float *);
288 if (device_drv->flags & DF_MULTITHREAD) {
289 ss_mutex_wait_for(device_drv->mutex, 1000);
290 *pvalue = device_drv->mt_buffer->channel[channel].variable[cmd];
291 status = device_drv->mt_buffer->status;
292 if (device_drv->mt_buffer->channel[channel].n_read < 1)
294 ss_mutex_release(device_drv->mutex);
295 } else
296 status = device_drv->dd(cmd, device_drv->dd_info, channel, pvalue);
297
298 } else {
299
300 /* all remaining commands which are passed directly to the device driver */
301 channel = va_arg(argptr, INT);
302 pvalue = va_arg(argptr, float *);
303 status = device_drv->dd(cmd, device_drv->dd_info, channel, pvalue);
304 }
305
306 break;
307 }
308
309 va_end(argptr);
310 return status;
311}
#define FALSE
Definition cfortran.h:309
static int sc_thread(void *info)
#define SS_SUCCESS
Definition midas.h:664
#define SS_CREATED
Definition midas.h:665
#define CMD_CLOSE
Definition midas.h:774
#define FE_SUCCESS
Definition midas.h:718
#define CMD_INIT
Definition midas.h:763
#define CMD_SET_LAST
Definition midas.h:785
#define CMD_SET_FIRST
Definition midas.h:777
#define CMD_STOP
Definition midas.h:766
#define FE_NOT_YET_READ
Definition midas.h:724
#define CMD_GET_LAST
Definition midas.h:794
#define CMD_SET_LABEL
Definition midas.h:771
#define FE_PARTIALLY_DISABLED
Definition midas.h:723
#define CMD_START
Definition midas.h:765
#define FE_ERR_DRIVER
Definition midas.h:722
#define CMD_GET_LABEL
Definition midas.h:772
#define CMD_EXIT
Definition midas.h:764
#define CMD_GET_FIRST
Definition midas.h:787
INT ss_mutex_release(MUTEX_T *mutex)
Definition system.cxx:3236
INT ss_thread_kill(midas_thread_t thread_id)
Definition system.cxx:2455
INT ss_mutex_delete(MUTEX_T *mutex)
Definition system.cxx:3290
INT ss_mutex_create(MUTEX_T **mutex, BOOL recursive)
Definition system.cxx:3020
midas_thread_t ss_thread_create(INT(*thread_func)(void *), void *param)
Definition system.cxx:2382
INT ss_mutex_wait_for(MUTEX_T *mutex, INT timeout)
Definition system.cxx:3116
#define DF_MULTITHREAD
Definition midas.h:1055
INT j
Definition odbhist.cxx:40
double value[100]
Definition odbhist.cxx:42
Here is the call graph for this function:

◆ ends_with_char()

bool EXPRT ends_with_char ( const std::string &  s,
char  c 
)

Definition at line 412 of file midas.cxx.

413{
414 if (s.length() < 1)
415 return false;
416 return s[s.length()-1] == c;
417}
Here is the caller graph for this function:

◆ hs_image_retrieve()

int hs_image_retrieve ( std::string  image_name,
time_t  start,
time_t  stop,
std::vector< time_t > &  vtime,
std::vector< std::string > &  vfilename 
)

Definition at line 332 of file history_image.cxx.

334{
335 // auto start = usStart();
336 std::string path = history_dir() + image_name;
337
338 std::string mask;
339 if (start_time == stop_time) {
340 ss_tzset(); // required by localtime_r()
341 struct tm ltm;
342 localtime_r(&start_time, &ltm);
343 std::stringstream s;
344 s <<
345 std::setfill('0') << std::setw(2) << ltm.tm_year - 100 <<
346 std::setfill('0') << std::setw(2) << ltm.tm_mon + 1 <<
347 std::setfill('0') << std::setw(2) << ltm.tm_mday <<
348 "_" << "??????.*";
349 mask = s.str();
350 } else {
351 ss_tzset(); // required by localtime_r()
352 struct tm ltStart, ltStop;
353 localtime_r(&start_time, &ltStart);
354 localtime_r(&stop_time, &ltStop);
355 std::stringstream sStart, sStop;
356 std::string mStart, mStop;
357 mask = "??????_??????.*";
358
359 sStart <<
360 std::setfill('0') << std::setw(2) << ltStart.tm_year - 100 <<
361 std::setfill('0') << std::setw(2) << ltStart.tm_mon + 1 <<
362 std::setfill('0') << std::setw(2) << ltStart.tm_mday <<
363 "_" <<
364 std::setfill('0') << std::setw(2) << ltStart.tm_hour <<
365 std::setfill('0') << std::setw(2) << ltStart.tm_min <<
366 std::setfill('0') << std::setw(2) << ltStart.tm_sec;
367 mStart = sStart.str();
368 sStop <<
369 std::setfill('0') << std::setw(2) << ltStop.tm_year - 100 <<
370 std::setfill('0') << std::setw(2) << ltStop.tm_mon + 1 <<
371 std::setfill('0') << std::setw(2) << ltStop.tm_mday <<
372 "_" <<
373 std::setfill('0') << std::setw(2) << ltStop.tm_hour <<
374 std::setfill('0') << std::setw(2) << ltStop.tm_min <<
375 std::setfill('0') << std::setw(2) << ltStop.tm_sec;
376 mStop = sStop.str();
377 for (int i=0 ; i<13 ; i++) {
378 if (mStart[i] == mStop[i])
379 mask[i] = mStart[i];
380 else
381 break;
382 }
383 }
384
385 STRING_LIST vfn;
386
387 ss_file_find(path.c_str(), mask.c_str(), &vfn);
388
389 if (vfn.size() == 0)
390 ss_file_find(path.c_str(), "??????_??????.*", &vfn);
391
392 std::sort(vfn.begin(), vfn.end());
393
394 time_t minDiff = 1E7;
395 time_t minTime{};
396 int minIndex{};
397
398 for (unsigned i=0 ; i<vfn.size() ; i++) {
399 struct tm ti{};
400 sscanf(vfn[i].c_str(), "%2d%2d%2d_%2d%2d%2d", &ti.tm_year, &ti.tm_mon,
401 &ti.tm_mday, &ti.tm_hour, &ti.tm_min, &ti.tm_sec);
402 ti.tm_year += 100;
403 ti.tm_mon -= 1;
404 ti.tm_isdst = -1;
405 time_t ft = ss_mktime(&ti);
406 time_t now;
407 time(&now);
408
409 if (abs(ft - start_time) < minDiff) {
410 minDiff = abs(ft - start_time);
411 minTime = ft;
412 minIndex = i;
413 }
414
415 if (start_time != stop_time && ft >= start_time && ft <= stop_time) {
416 vtime.push_back(ft);
417 vfilename.push_back(vfn[i]);
418 }
419 }
420
421 // start == stop means return single image closest to them
422 if (start_time == stop_time && vfn.size() > 0) {
423 vtime.push_back(minTime);
424 vfilename.push_back(vfn[minIndex]);
425 }
426
427 //std::cout << "mask = " << mask << ", n = " << n << ", t = " << usSince(start)/1000.0 << " ms" << std::endl;
428
429 return HS_SUCCESS;
430}
#define HS_SUCCESS
Definition midas.h:728
std::string history_dir()
DWORD stop_time
Definition mevb.cxx:55
#define mask(slot)
Definition midas_macro.h:54
Here is the call graph for this function:
Here is the caller graph for this function:

◆ lock_histo()

void EXPRT lock_histo ( INT  id)

Definition at line 3523 of file mana.cxx.

3524{
3525 INT i;
3526
3527 for (i = 0; i < 10000; i++)
3528 if (lock_list[i] == 0)
3529 break;
3530
3531 lock_list[i] = id;
3532}
INT lock_list[10000]
Definition mana.cxx:219

◆ msprintf()

std::string msprintf ( const char *  format,
  ... 
)

◆ open_subfolder()

void EXPRT open_subfolder ( const char *  name)
Here is the caller graph for this function:

◆ rpc_register_function()

INT EXPRT rpc_register_function ( INT  id,
RPC_HANDLER  func 
)

◆ test_register()

void EXPRT test_register ( ANA_TEST t)

Definition at line 546 of file mana.cxx.

547{
548 int i;
549
550 /* check if test already registered */
551 for (i = 0; i < n_test; i++)
552 if (tl[i] == t)
553 break;
554 if (i < n_test) {
555 t->registered = TRUE;
556 return;
557 }
558
559 /* allocate space for pointer to test */
560 if (n_test == 0) {
561 tl = (ANA_TEST **) malloc(2 * sizeof(void *));
562
563 /* define "always true" test */
564 tl[0] = (ANA_TEST *) malloc(sizeof(ANA_TEST));
565 strcpy(tl[0]->name, "Always true");
566 tl[0]->count = 0;
567 tl[0]->previous_count = 0;
568 tl[0]->value = TRUE;
569 tl[0]->registered = TRUE;
570 n_test++;
571 } else
572 tl = (ANA_TEST **) realloc(tl, (n_test + 1) * sizeof(void *));
573
574 tl[n_test] = t;
575 t->count = 0;
576 t->value = FALSE;
577 t->registered = TRUE;
578
579 n_test++;
580}
ANA_TEST ** tl
Definition mana.cxx:543
int n_test
Definition mana.cxx:544
#define TRUE
Definition midas.h:182
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