#ifndef _TANDEM_SOURCE #define _TANDEM_SOURCE #endif /** * * MQ queue/channel agent * Author: Diederick de Buck * Department: RC/Tandem * Skeleton: \appl\skl12\slb\skeleton * Source: \appl\asap\src\mqmagt * Remarks: * * 05/11/2003 DDB: initial release * S0008S12_mqmagt_05nov2003 * * 20/03/2004 DDB: bugfix * mqExecute extended with optbag_handle * optbag filled with WaitInterval MQWI_UNLIMITED * * 28/05/2004 DDB: bugfix * implemented "afterglow" algorithm to signal channels that * re-register themselves within 1 interval. * * 03/06/2004 DDB: feature * introduced CHANNEL_HYSTERESIS option to signal channel down * conditions only if the xmit_queue contains data (sender channels only) * * 03/06/2004 DDB: feature * refined CHANNEL_HYSTERESIS by introducing system types * * 06/06/2004 DDB: feature * refined CHANNEL_HYSTERESIS for receiver channels * * 15/07/2004 DDB: workaround * in are circumstances MQ doesn't cleanup the ASAPX.REPLY queue. * introducing sequenced ASAPX.REPLY.SEQNO queues in case of 2100 * error. To prevent "looping" the sequence number will be modulo * ASAPX_Q_REPLY_SEQ_MAX. * * 17/07/2004 DDB: feature * suppress agent alerts for 1 interval. report only errors on consecutive * intervals. give autorecovery 1 chance without blinking the lights on the * annunciator panels on the bridge. * * 29/10/2004 DDB: workaround * if DOMAIN_INI fails due to timeout, the domain routines doesn't have a * valid ASAP handle. * If DOMAIN_STOP is invoked directly after this timeout condition, an orphan * domain (because an ASAP handle is missing). * * 03/12/2004 DDB: removal workaround * get rid of afterglow algorithm. Joe (Davis) fixed the OpState problem within ASAP * * 04/11/2005 DDB: workaround * ASAP got a problem when an ASAP application calls DOMAIN_STOP just before * a database rollover. ASAP client won't notice this condition (it doesn't know the concept of database rollover). * workaround delays de-registrations 1 sample interval before rollover (hardcoded 5 minutes) * * 29/11/2005 DDB: workaround * MQ 5.3 uses segmentid 0 as default. ASAPX uses segmentid 0 as default * resulting in collision of segment ids. #define MQ53 defines whether * asap uses segmentid 777 (random number) to avoid collisions * * ... Keep on rockin' -- Michelle Shocked */ #include "=ZSPIC" #include "=ZFILC" #include "=RABO_DDL_RABOC( ZEMS_VAL_BOOL_FALSE \ , ZEMS_VAL_BOOL_TRUE \ , zems_val_cnt_typ \ , zems_val_evt_buflen \ , ZEMS_VAL_ERR_TYP_NULL \ , ZEMS_VAL_ERR_TYP_FILESYSTEM \ , ZEMS_VAL_ERR_TYP_SQL \ , ZEMS_VAL_ERR_TYP_PATHSEND \ , ZEMS_VAL_ERR_TYP_PRCREATE \ , ZEMS_VAL_ERR_TYP_PRDEATH \ , ZEMS_VAL_ERR_TYP_SPAWN \ , ZEMS_VAL_ERR_TYP_ASAPREGISTER \ , ZEMS_VAL_ERR_TYP_ASAPREMOVE \ , ZEMS_VAL_ERR_TYP_ASAPCONTROL \ , ZEMS_VAL_ERR_TYP_ASAPUPDATE \ , ZEMS_VAL_ERR_TYP_MQ \ , zems_val_obj_state \ , zems_val_obj_rsn \ , zems_val_obj_typ \ , ZEMS_VAL_OWNER_RABO \ , RABO_VAL_SSN_SKEL \ , RABO_VAL_SSN_ASAP \ , ZEMS_TXT_OBJ_TYP_DEV \ , ZEMS_TXT_OBJ_TYP_FILE \ , ZEMS_TXT_OBJ_TYP_LDEV \ , ZEMS_TXT_OBJ_TYP_PROCESS \ , ZEMS_TXT_OBJ_TYP_SERVICE \ , ZEMS_TXT_OBJ_TYP_SU \ , ZEMS_TXT_OBJ_TYP_TABLE \ , ZEMS_TXT_OBJ_TYP_USER \ , ZEMS_TXT_OBJ_TYP_SC \ , ZEMS_TXT_OBJ_TYP_CONNECTION )" #ifdef _GUARDIAN_TARGET /* #include "=SKL12_DDL_SKELC(general,receive,manager,ppl)" */ #include "=SKL12_DDL_SKELC(general,receive,manager)" /* adjusted due to absence of PPL_SRV */ #else #include "=SKL12_DDL_SKELC(general,receive,manager)" #endif #include "=RABO_SLB_MTRICC" #include "=STDIOH" #include "=STDLIBH" #include "=STDARGH" #include "=STRINGH" #include "=LIMITSH" #include "=ERRNOH" #include "=TALH" #include "=CEXTDECS" #include "=RABO_SLB_EMSDECSH(EMS_FMT_CNT_TYP_AVAILABLE,EMS_FMT_CNT_TYP_UNAVAILABLE,EMS_FMT_CNT_TYP_STATECHANGE)" #include "=ZSYSC" #include "=FCNTLH" #include "=CTYPEH" #include "=DLAUNCHH" #include "=SKL12_SLB_TRIST" #ifdef RMS_TARGET_OBJ #include "=MQ_DDL_CMQCH" #include "=MQ_DDL_CMQCFCH" #include "=MQ_DDL_CMQBCH" #include "=MQ_DDL_CMQXCH" #else #include "=CMQCH" #include "=CMQCFCH" #include "=CMQBCH" #include "=CMQXCH" #endif #ifndef SQLprogram #define SQLprogram 0 #endif #if SQLprogram EXEC SQL INCLUDE STRUCTURES ALL VERSION 300; EXEC SQL INCLUDE SQLCA; short sqlcode; #endif /* #define false ZEMS_VAL_BOOL_FALSE #define true ZEMS_VAL_BOOL_TRUE */ #define false 0 #define true 1 typedef enum _asapx_state { ASAPX_ENM_STATUS_EXISTS = 1, ASAPX_ENM_STATUS_UP = 2, ASAPX_ENM_STATUS_LOW = 3, ASAPX_ENM_STATUS_MEDIUM = 4, ASAPX_ENM_STATUS_HIGH = 5, ASAPX_ENM_STATUS_ODD = 6, ASAPX_ENM_STATUS_CRITICAL = 7, ASAPX_ENM_STATUS_DOWN = 8 } asapx_state_t; typedef enum _asapx_math { ASAPX_ENM_MATH_ADD = 0, ASAPX_ENM_MATH_REPLACE = 1, ASAPX_ENM_MATH_REPLACE_2 = 2 } asapx_math_t; #define MAX_B_LEN_QMGR_NAME MQ_Q_MGR_NAME_LENGTH #define MAX_B_LEN_QUEUE_NAME MQ_Q_NAME_LENGTH #define MAX_B_LEN_CHANNEL_NAME MQ_CHANNEL_NAME_LENGTH #define MAX_B_LEN_ASAPID 4 #define MAX_B_LEN_DOMAINID 64 #define MAX_B_LEN_DOMAINID_OBJECT_ROOT 8 #define MAX_B_LEN_DOMAINID_AGENT_ROOT 8 #define MAX_B_LEN_STATETEXT 15 #define MAX_B_LEN_DATAITEM 8 #define MAX_B_LEN_JOB_NAME MQ_MCA_JOB_NAME_LENGTH #define MAX_B_LEN_CHANNEL_TYPE 9 #define MAX_B_LEN_CLASS 7 #define MAX_B_LEN_PROCESS_NAME 6 #define MAX_B_LEN_CHANNEL_PREFIX 1 #define MAX_B_LEN_SEQNO 1 #define MAX_B_LEN_HHMM 4 #define MAX_W_LEN_TIMEDATE 7 #define MOD_MAX_MQMAGT 32 /* 06/11/2005 DDB: added */ #define MOD_VAL_ASAPID 1001 #define MOD_VAL_SAMPLE_INTERVAL 1002 #define MOD_VAL_DOMAINID_OBJECT_ROOT 1003 #define MOD_VAL_DOMAINID_AGENT_ROOT 1004 #define MOD_VAL_QMGR_NAME 1005 #define MOD_VAL_EXCLUDE_Q_SYSTEM 1006 #define MOD_VAL_EXCLUDE_Q_MODEL 1007 #define MOD_VAL_EXCLUDE_Q_TEMP 1008 #define MOD_VAL_ASAPX_Q_REPLY 1009 #define MOD_VAL_ASAPX_Q_MODEL 1010 #define MOD_VAL_EXCLUDE_CHT_SENDER 1011 #define MOD_VAL_EXCLUDE_CHT_SERVER 1012 #define MOD_VAL_EXCLUDE_CHT_RECEIVER 1013 #define MOD_VAL_EXCLUDE_CHT_REQUESTER 1014 #define MOD_VAL_EXCLUDE_CHT_SVRCONN 1015 #define MOD_VAL_EXCLUDE_CHT_CLNTCONN 1016 #define MOD_VAL_EXCLUDE_CHT_CLUSRCVR 1017 #define MOD_VAL_EXCLUDE_CHT_CLUSSDR 1018 #define MOD_VAL_EXCLUDE_CHL_SYSTEM 1019 #define MOD_VAL_EXCLUDE_CHL_MODEL 1020 #define MOD_VAL_CHANNEL_FILTER_NSK 1021 #define MOD_VAL_CHANNEL_FILTER_ZOS 1022 #define MOD_VAL_CHANNEL_FILTER_AIX 1023 #define MOD_VAL_CHANNEL_FILTER_WIN 1024 #define MOD_VAL_CHANNEL_PREFIX_NSK 1025 #define MOD_VAL_CHANNEL_PREFIX_ZOS 1026 #define MOD_VAL_CHANNEL_PREFIX_AIX 1027 #define MOD_VAL_CHANNEL_PREFIX_WIN 1028 #define MOD_VAL_ASAPX_Q_REPLY_SEQNO_MAX 1029 #define MOD_VAL_CHANNEL_ALERT 1030 #define MOD_VAL_ROLLOVER_HOUR 1031 /* 06/11/2005 DDB: added */ #define MOD_VAL_ROLLOVER_MINUTES 1032 /* 06/11/2005 DDB: added */ #define MOD_TXT_ASAPID "ASAPID" #define MOD_TXT_SAMPLE_INTERVAL "SAMPLE_INTERVAL" #define MOD_TXT_DOMAINID_OBJECT_ROOT "DOMAINID_OBJECT_ROOT" #define MOD_TXT_DOMAINID_AGENT_ROOT "DOMAINID_AGENT_ROOT" #define MOD_TXT_QMGR_NAME "QMGR_NAME" #define MOD_TXT_EXCLUDE_Q_SYSTEM "EXCLUDE_Q_SYSTEM" #define MOD_TXT_EXCLUDE_Q_MODEL "EXCLUDE_Q_MODEL" #define MOD_TXT_EXCLUDE_Q_TEMP "EXCLUDE_Q_TEMP" #define MOD_TXT_ASAPX_Q_REPLY "ASAPX_Q_REPLY" #define MOD_TXT_ASAPX_Q_MODEL "ASAPX_Q_MODEL" #define MOD_TXT_EXCLUDE_CHT_SENDER "EXCLUDE_CHT_SENDER" #define MOD_TXT_EXCLUDE_CHT_SERVER "EXCLUDE_CHT_SERVER" #define MOD_TXT_EXCLUDE_CHT_RECEIVER "EXCLUDE_CHT_RECEIVER" #define MOD_TXT_EXCLUDE_CHT_REQUESTER "EXCLUDE_CHT_REQUESTER" #define MOD_TXT_EXCLUDE_CHT_SVRCONN "EXCLUDE_CHT_SVRCONN" #define MOD_TXT_EXCLUDE_CHT_CLNTCONN "EXCLUDE_CHT_CLNTCONN" #define MOD_TXT_EXCLUDE_CHT_CLUSRCVR "EXCLUDE_CHT_CLUSRCVR" #define MOD_TXT_EXCLUDE_CHT_CLUSSDR "EXCLUDE_CHT_CLUSSDR" #define MOD_TXT_EXCLUDE_CHL_SYSTEM "EXCLUDE_CHL_SYSTEM" #define MOD_TXT_EXCLUDE_CHL_MODEL "EXCLUDE_CHL_MODEL" #define MOD_TXT_CHANNEL_FILTER_NSK "CHANNEL_FILTER_NSK" #define MOD_TXT_CHANNEL_FILTER_ZOS "CHANNEL_FILTER_ZOS" #define MOD_TXT_CHANNEL_FILTER_AIX "CHANNEL_FILTER_AIX" #define MOD_TXT_CHANNEL_FILTER_WIN "CHANNEL_FILTER_WIN" #define MOD_TXT_CHANNEL_PREFIX_NSK "CHANNEL_PREFIX_NSK" #define MOD_TXT_CHANNEL_PREFIX_ZOS "CHANNEL_PREFIX_ZOS" #define MOD_TXT_CHANNEL_PREFIX_AIX "CHANNEL_PREFIX_AIX" #define MOD_TXT_CHANNEL_PREFIX_WIN "CHANNEL_PREFIX_WIN" #define MOD_TXT_ASAPX_Q_REPLY_SEQNO_MAX "ASAPX_Q_REPLY_SEQNO_MAX" #define MOD_TXT_CHANNEL_ALERT "CHANNEL_ALERT" #define MOD_TXT_ROLLOVER_HOUR "ROLLOVER_HOUR" /* 06/11/2005 DDB: added */ #define MOD_TXT_ROLLOVER_MINUTES "ROLLOVER_MINUTES" /* 06/11/2005 DDB: added */ char prc_asapid[MAX_B_LEN_ASAPID+1] = "$QED"; char prc_domainid_object_root[MAX_B_LEN_DOMAINID_OBJECT_ROOT+1] = "MQ"; char prc_domainid_agent_root[MAX_B_LEN_DOMAINID_AGENT_ROOT+1] = "MQA"; char prc_qmgr_name[MAX_B_LEN_QMGR_NAME+1]; char prc_asapx_q_reply[MAX_B_LEN_QUEUE_NAME+1] = "ASAPX.REPLY"; char prc_asapx_q_model[MAX_B_LEN_QUEUE_NAME+1] = "SYSTEM.DEFAULT.MODEL.QUEUE"; char prc_channel_prefix_nsk[MAX_B_LEN_CHANNEL_PREFIX+1] = "T"; char prc_channel_prefix_zos[MAX_B_LEN_CHANNEL_PREFIX+1] = "Q"; char prc_channel_prefix_aix[MAX_B_LEN_CHANNEL_PREFIX+1] = "U"; char prc_channel_prefix_win[MAX_B_LEN_CHANNEL_PREFIX+1] = "D"; long prc_sample_interval = 12000l; long prc_asapx_q_reply_seqno_max = 1l; int prc_exclude_q_system = true; int prc_exclude_q_model = true; int prc_exclude_q_temp = true; int prc_exclude_cht_sender = false; int prc_exclude_cht_server = true; int prc_exclude_cht_receiver = false; int prc_exclude_cht_requester = true; int prc_exclude_cht_svrconn = true; int prc_exclude_cht_clntconn = true; int prc_exclude_cht_clusrcvr = true; int prc_exclude_cht_clussdr = true; int prc_exclude_chl_system = true; int prc_exclude_chl_model = true; int prc_channel_filter_nsk = false; int prc_channel_filter_zos = false; int prc_channel_filter_aix = false; int prc_channel_filter_win = true; int prc_channel_alert = true; int prc_rollover_hour = 0; /* 06/11/2005 DDB: added */ int prc_rollover_minutes = 0; /* 06/11/2005 DDB: added */ long long jt; #define GEN_SRV_MAX 2+1 /* adjusted SRV_MAX due to absence of PPL_SRV */ #define MAX_OPEN_DPT 1 #define CMD_SCT_MAX CMD_SCT_MAX_SKEL #ifdef _GUARDIAN_TARGET #define CMD_TXT_MAX CMD_MAX_SKEL+ENT_MAX_SKEL+MOD_MAX_SKEL+OBJ_TYP_MAX+BOOL_MAX+EV_TYPE_MAX+EVCOLL_TYPE_MAX+PPLCPU_MAX+MOD_MAX_MQMAGT #else #define CMD_TXT_MAX CMD_MAX_SKEL+ENT_MAX_SKEL+MOD_MAX_SKEL+OBJ_TYP_MAX+BOOL_MAX+EV_TYPE_MAX+EVCOLL_TYPE_MAX #endif #define OBJ_MAX 1 #define SRV_MAX 3+1 /* adjusted SRV_MAX due to absence of PPL_SRV */ #define GEN_SRV 0 #define RCV_SRV 1 #define MAN_SRV 2 #ifdef _GUARDIAN_TARGET #define PPL_SRV 3 #endif #define MQM_SRV 3 /* adjusted MQM_SRV due to absence of PPL_SRV */ #define RCV_DEFAULT_OPEN_SRV MQM_SRV #define RCV_PRIORITY_ORDER 0 #define GEN_SSID_OWNER ZEMS_VAL_OWNER_RABO #define GEN_SSID_SSN RABO_VAL_SSN_ASAP #define GEN_SSID_VERSION 0 #define GEN_DEVICE_RECLEN 0u #include "=SKL12_SLB_SKELETON" typedef enum _mqa_ops_type { MQA_ENM_OPS_TYPE_NULL = 0, MQA_ENM_OPS_TYPE_CONN = 1, MQA_ENM_OPS_TYPE_OPEN = 2, MQA_ENM_OPS_TYPE_CREATEBAG = 3, MQA_ENM_OPS_TYPE_ADDSTRING = 4, MQA_ENM_OPS_TYPE_ADDINT = 5, MQA_ENM_OPS_TYPE_ADDINQ = 6, MQA_ENM_OPS_TYPE_EXECUTE = 7, MQA_ENM_OPS_TYPE_INQBAG = 8, MQA_ENM_OPS_TYPE_INQSTRING = 9, MQA_ENM_OPS_TYPE_INQINT = 10, MQA_ENM_OPS_TYPE_CNTITEMS = 11, MQA_ENM_OPS_TYPE_DELETEBAG = 12, MQA_ENM_OPS_TYPE_DISC = 13, MQA_ENM_OPS_TYPE_CREATEQ = 14 } mqa_ops_type_t; typedef enum _mq_obj_class { MQ_ENM_OBJ_CLASS_QUEUE = 0, MQ_ENM_OBJ_CLASS_PROCESS = 1, MQ_ENM_OBJ_CLASS_CHANNEL = 2, MQ_ENM_OBJ_CLASS_AGENT = 3 } mq_obj_class_t; char *mq_obj_class[] = { "QUEUE", "PROCESS", "CHANNEL", "AGENT" }; typedef enum _mqa_dit { MQA_ENM_DIT_AGENT_OPS_TYPE = 0, MQA_ENM_DIT_AGENT_REASON = 1, MQA_ENM_DIT_AGENT_COMPCODE = 2, MQA_ENM_DIT_OBJECT_UTIL = 3, MQA_ENM_DIT_OBJECT = 4, MQA_ENM_DIT_OBJECT_BAD = 5, MQA_ENM_DIT_OBJECT_EXCLUDED = 6 } mqa_dit_t; typedef enum _mq_dit { MQ_ENM_DIT_QUEUE_DEPTH = 0, MQ_ENM_DIT_QUEUE_DEPTH_MAX = 1, MQ_ENM_DIT_CHANNEL_BYTES_SEND = 2, MQ_ENM_DIT_CHANNEL_BYTES_RCVD = 3, MQ_ENM_DIT_CHANNEL_MSGS = 4 } mq_dit_t; #define MQCHS_STOPPED_2 -1 #define MQM_WHT_TRIGGER_1 1 #define MQM_WHT_MQCONN_1 2 #define MQM_WHT_MQOPEN_1 3 #define MQM_WHT_INQ_QS_OPTBAG_ADD_1 4 #define MQM_WHT_INQ_QS_REQBAG_ADD_1 5 #define MQM_WHT_INQ_QS_RSPBAG_ADD_1 6 #define MQM_WHT_INQ_QS_OPTBAG_SET_1 7 #define MQM_WHT_INQ_QS_REQBAG_SET_1 8 #define MQM_WHT_INQ_QS_REQBAG_PUT_1 9 #define MQM_WHT_INQ_QS_RSPBAG_GET_1 10 #define MQM_WHT_INQ_QS_OPTBAG_DEL_1 11 #define MQM_WHT_INQ_QS_REQBAG_DEL_1 12 #define MQM_WHT_INQ_QS_RSPBAG_DEL_1 13 #define MQM_WHT_ASAPX_1 14 #define MQM_WHT_TRIGGER_2 15 #define MQM_WHT_ASAPX_2 16 #define MQM_WHT_TRIGGER_3 17 #define MQM_WHT_MQCONN_3 18 #define MQM_WHT_MQOPEN_3 19 #define MQM_WHT_INQ_CI_OPTBAG_ADD_3 20 #define MQM_WHT_INQ_CI_REQBAG_ADD_3 21 #define MQM_WHT_INQ_CI_RSPBAG_ADD_3 22 #define MQM_WHT_INQ_CI_OPTBAG_SET_3 23 #define MQM_WHT_INQ_CI_REQBAG_SET_3 24 #define MQM_WHT_INQ_CI_REQBAG_PUT_3 25 #define MQM_WHT_INQ_CI_RSPBAG_GET_3 26 #define MQM_WHT_INQ_CI_OPTBAG_DEL_3 27 #define MQM_WHT_INQ_CI_REQBAG_DEL_3 28 #define MQM_WHT_INQ_CI_RSPBAG_DEL_3 29 #define MQM_WHT_INQ_CS_OPTBAG_ADD_3 30 #define MQM_WHT_INQ_CS_REQBAG_ADD_3 31 #define MQM_WHT_INQ_CS_RSPBAG_ADD_3 32 #define MQM_WHT_INQ_CS_OPTBAG_SET_3 33 #define MQM_WHT_INQ_CS_REQBAG_SET_3 34 #define MQM_WHT_INQ_CS_REQBAG_PUT_3 35 #define MQM_WHT_INQ_CS_RSPBAG_GET_3 36 #define MQM_WHT_INQ_CS_OPTBAG_DEL_3 37 #define MQM_WHT_INQ_CS_REQBAG_DEL_3 38 #define MQM_WHT_INQ_CS_RSPBAG_DEL_3 39 #define MQM_WHT_ASAPX_3 40 #define MQM_WHT_TRIGGER_4 41 #define MQM_WHT_ASAPX_4 42 #define MQM_WHT_TRIGGER_5 43 #define MQM_WHT_WAIT_5 44 #define MQM_WHT_AWAKE_5 45 #define MQM_TXT_TRIGGER_1 "TRIGGER_1" #define MQM_TXT_MQCONN_1 "MQCONN_1" #define MQM_TXT_MQOPEN_1 "MQOPEN_1" #define MQM_TXT_INQ_QS_OPTBAG_ADD_1 "INQ_QS_OPTBAG_ADD_1" #define MQM_TXT_INQ_QS_REQBAG_ADD_1 "INQ_QS_REQBAG_ADD_1" #define MQM_TXT_INQ_QS_RSPBAG_ADD_1 "INQ_QS_RSPBAG_ADD_1" #define MQM_TXT_INQ_QS_OPTBAG_SET_1 "INQ_QS_OPTBAG_SET_1" #define MQM_TXT_INQ_QS_REQBAG_SET_1 "INQ_QS_REQBAG_SET_1" #define MQM_TXT_INQ_QS_REQBAG_PUT_1 "INQ_QS_REQBAG_PUT_1" #define MQM_TXT_INQ_QS_RSPBAG_GET_1 "INQ_QS_RSPBAG_GET_1" #define MQM_TXT_INQ_QS_OPTBAG_DEL_1 "INQ_QS_OPTBAG_DEL_1" #define MQM_TXT_INQ_QS_REQBAG_DEL_1 "INQ_QS_REQBAG_DEL_1" #define MQM_TXT_INQ_QS_RSPBAG_DEL_1 "INQ_QS_RSPBAG_DEL_1" #define MQM_TXT_ASAPX_1 "ASAPX_1" #define MQM_TXT_TRIGGER_2 "TRIGGER_2" #define MQM_TXT_ASAPX_2 "ASAPX_2" #define MQM_TXT_TRIGGER_3 "TRIGGER_3" #define MQM_TXT_MQCONN_3 "MQCONN_3" #define MQM_TXT_MQOPEN_3 "MQOPEN_3" #define MQM_TXT_INQ_CI_OPTBAG_ADD_3 "INQ_CI_OPTBAG_ADD_3" #define MQM_TXT_INQ_CI_REQBAG_ADD_3 "INQ_CI_REQBAG_ADD_3" #define MQM_TXT_INQ_CI_RSPBAG_ADD_3 "INQ_CI_RSPBAG_ADD_3" #define MQM_TXT_INQ_CI_OPTBAG_SET_3 "INQ_CI_OPTBAG_SET_3" #define MQM_TXT_INQ_CI_REQBAG_SET_3 "INQ_CI_REQBAG_SET_3" #define MQM_TXT_INQ_CI_REQBAG_PUT_3 "INQ_CI_REQBAG_PUT_3" #define MQM_TXT_INQ_CI_RSPBAG_GET_3 "INQ_CI_RSPBAG_GET_3" #define MQM_TXT_INQ_CI_OPTBAG_DEL_3 "INQ_CI_OPTBAG_DEL_3" #define MQM_TXT_INQ_CI_REQBAG_DEL_3 "INQ_CI_REQBAG_DEL_3" #define MQM_TXT_INQ_CI_RSPBAG_DEL_3 "INQ_CI_RSPBAG_DEL_3" #define MQM_TXT_INQ_CS_OPTBAG_ADD_3 "INQ_CS_OPTBAG_ADD_3" #define MQM_TXT_INQ_CS_REQBAG_ADD_3 "INQ_CS_REQBAG_ADD_3" #define MQM_TXT_INQ_CS_RSPBAG_ADD_3 "INQ_CS_RSPBAG_ADD_3" #define MQM_TXT_INQ_CS_OPTBAG_SET_3 "INQ_CS_OPTBAG_SET_3" #define MQM_TXT_INQ_CS_REQBAG_SET_3 "INQ_CS_REQBAG_SET_3" #define MQM_TXT_INQ_CS_REQBAG_PUT_3 "INQ_CS_REQBAG_PUT_3" #define MQM_TXT_INQ_CS_RSPBAG_GET_3 "INQ_CS_RSPBAG_GET_3" #define MQM_TXT_INQ_CS_OPTBAG_DEL_3 "INQ_CS_OPTBAG_DEL_3" #define MQM_TXT_INQ_CS_REQBAG_DEL_3 "INQ_CS_REQBAG_DEL_3" #define MQM_TXT_INQ_CS_RSPBAG_DEL_3 "INQ_CS_RSPBAG_DEL_3" #define MQM_TXT_ASAPX_3 "ASAPX_3" #define MQM_TXT_TRIGGER_4 "TRIGGER_4" #define MQM_TXT_ASAPX_4 "ASAPX_4" #define MQM_TXT_TRIGGER_5 "TRIGGER_5" #define MQM_TXT_WAIT_5 "WAIT_5" #define MQM_TXT_AWAKE_5 "AWAKE_5" typedef struct _agent_attr { int object; int object_ok; int object_excluded; int raise_alert; MQLONG reason; MQLONG compcode; mqa_ops_type_t ops_type; } agent_attr_t; typedef struct _mqm_dat { MQHCONN connection_handle; MQHOBJ asapx_q_reply_handle; long asapx_q_reply_seqno; MQHBAG optbag_handle; MQHBAG reqbag_handle; MQHBAG rspbag_handle; MQHBAG attrbag_handle; agent_attr_t queue; agent_attr_t channel; } mqm_dat_t; #define MQM_ULO_MAX 1 mqm_dat_t mqm_dat[MQM_ULO_MAX]; #define MQM_QS_CTRL_MAX 500 #define MQM_CI_CTRL_MAX 500 #define MQM_CS_CTRL_MAX MQM_CI_CTRL_MAX telem te[MQM_QS_CTRL_MAX+MQM_CI_CTRL_MAX+MQM_CS_CTRL_MAX]; flist fl_te; typedef struct _qs_attr { MQLONG depth; MQLONG depth_max; } qs_attr_t; #define MAX_B_LEN_QS_PKEY MAX_B_LEN_DOMAINID_OBJECT_ROOT+1+ \ MAX_B_LEN_QMGR_NAME+1+ \ MAX_B_LEN_CLASS+1+ \ MAX_B_LEN_QUEUE_NAME typedef struct _mqm_qs_ctrl { char pkey[MAX_B_LEN_QS_PKEY+1]; int pkey_len; domain_def domain; int age; int excluded; int registered; qs_attr_t qs_attr; } mqm_qs_ctrl_t; mqm_qs_ctrl_t mqm_qs_ctrl[MQM_QS_CTRL_MAX]; list fl_mqm_qs_ctrl; trist tr_mqm_qs_ctrl; typedef struct _ci_attr { MQLONG status; } ci_attr_t; #define MAX_B_LEN_CI_PKEY MAX_B_LEN_DOMAINID_OBJECT_ROOT+1+ \ MAX_B_LEN_QMGR_NAME+1+ \ MAX_B_LEN_CLASS+1+ \ MAX_B_LEN_CHANNEL_TYPE+1+ \ MAX_B_LEN_CHANNEL_NAME typedef struct _mqm_ci_ctrl { char pkey[MAX_B_LEN_CI_PKEY+1]; int pkey_len; MQLONG channel_type; domain_def domain; int age; int excluded; int registered; ci_attr_t ci_attr; } mqm_ci_ctrl_t; typedef struct _cs_attr { MQLONG xmit_queue_depth; MQLONG bytes_send_prev; MQLONG bytes_send_curr; MQLONG bytes_rcvd_prev; MQLONG bytes_rcvd_curr; MQLONG msgs_prev; MQLONG msgs_curr; MQLONG status; MQLONG stop_request; } cs_attr_t; #define MAX_B_LEN_CS_PKEY MAX_B_LEN_DOMAINID_OBJECT_ROOT+1+ \ MAX_B_LEN_QMGR_NAME+1+ \ MAX_B_LEN_CLASS+1+ \ MAX_B_LEN_CHANNEL_TYPE+1+ \ MAX_B_LEN_CHANNEL_NAME+1+ \ MAX_B_LEN_JOB_NAME typedef struct _mqm_cs_ctrl { char pkey[MAX_B_LEN_CS_PKEY+1]; int pkey_len; MQLONG channel_type; domain_def domain; int age; int excluded; int registered; int filter; cs_attr_t cs_attr; } mqm_cs_ctrl_t; mqm_ci_ctrl_t mqm_ci_ctrl[MQM_CI_CTRL_MAX]; mqm_cs_ctrl_t mqm_cs_ctrl[MQM_CS_CTRL_MAX]; list fl_mqm_ci_ctrl; trist tr_mqm_ci_ctrl; list fl_mqm_cs_ctrl; trist tr_mqm_cs_ctrl; asapenv_def asapenv; domain_def domain_channel; domain_def domain_queue; int rollover_window(short window,int r_h_e,int r_m_e,int *r_h_s,int *r_m_s) { *r_h_s = r_h_e; *r_m_s = r_m_e - window; if (*r_m_s < 0) { *r_m_s = *r_m_s + 60; *r_h_s = *r_h_s - 1; if (*r_h_s < 0) { *r_h_s = *r_h_s + 24; return true; } } return false; } #pragma page int DOMAIN_STOP_(domain_def *d,short f) { char c_t_d[MAX_B_LEN_HHMM+1],c_r_s[MAX_B_LEN_HHMM+1],c_r_e[MAX_B_LEN_HHMM+1]; short status,t_d[MAX_W_LEN_TIMEDATE]; int r_h_e,r_m_e,r_h_s,r_m_s,i_t_d,i_r_s,i_r_e; status = true; if (f) { r_h_e = prc_rollover_hour; r_m_e = prc_rollover_minutes; /* * although a little dubious -- multiply sample_interval with 2 because * we often sample 2 times within asap interval (thus divide by 30) * it would be better to use prc_sample_interval as the true asap sample * interval and modify that value for internal use. However this is not * the case. */ if (rollover_window((short)((prc_sample_interval/100l/30l)+1l),r_h_e,r_m_e,&r_h_s,&r_m_s)) r_h_e = r_h_e + 24; /* if we go beyond day, add 24 to endtime */ TIME(t_d); i_t_d = t_d[3] * 100 + t_d[4]; /* current time */ sprintf(c_t_d,"%04hd",i_t_d); i_r_s = r_h_s * 100 + r_m_s; /* rollover window start */ sprintf(c_r_s,"%04hd",i_r_s); i_r_e = r_h_e * 100 + r_m_e; /* rollover window end */ sprintf(c_r_e,"%04hd",i_r_e); if ( (strncmp(c_t_d,c_r_s,MAX_B_LEN_HHMM) > 0) && (strncmp(c_t_d,c_r_e,MAX_B_LEN_HHMM) <= 0) ) status = false; } DOMAIN_STOP(d,(short)(f && status)); return status; } #pragma page "int strslen(char *s,int l)" int strslen(char *s,int l) { while (l && ((s[l-1] == ' ') || (s[l-1] == '\0'))) l--; return l; } #pragma page "long long mqa_ops_type_l(mqa_ops_type_t m)" long long mqa_ops_type_l(mqa_ops_type_t m) { long long ops_type_l; switch(m) { case MQA_ENM_OPS_TYPE_NULL : memcpy((char *)&ops_type_l," ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_CONN : memcpy((char *)&ops_type_l,"Connect ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_OPEN : memcpy((char *)&ops_type_l,"Open ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_CREATEBAG : memcpy((char *)&ops_type_l,"CreatBag",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_ADDSTRING : memcpy((char *)&ops_type_l,"AddStrng",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_ADDINT : memcpy((char *)&ops_type_l,"AddInt ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_ADDINQ : memcpy((char *)&ops_type_l,"AddInq ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_EXECUTE : memcpy((char *)&ops_type_l,"Execute ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_INQBAG : memcpy((char *)&ops_type_l,"InqBag ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_INQSTRING : memcpy((char *)&ops_type_l,"InqStrng",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_INQINT : memcpy((char *)&ops_type_l,"InqInt ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_CNTITEMS : memcpy((char *)&ops_type_l,"CntItems",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_DELETEBAG : memcpy((char *)&ops_type_l,"DelBag ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_DISC : memcpy((char *)&ops_type_l,"Disconn ",MAX_B_LEN_DATAITEM); break; case MQA_ENM_OPS_TYPE_CREATEQ : memcpy((char *)&ops_type_l,"CreateQ ",MAX_B_LEN_DATAITEM); break; default : memcpy((char *)&ops_type_l,"Unknown ",MAX_B_LEN_DATAITEM); break; } return ops_type_l; } #pragma page "long long mq_cc_l(MQLONG cc)" long long mq_cc_l(MQLONG cc) { long long cc_l; switch(cc) { case MQCC_OK : memcpy((char *)&cc_l,"OK ",MAX_B_LEN_DATAITEM); break; case MQCC_WARNING : memcpy((char *)&cc_l,"WARNING ",MAX_B_LEN_DATAITEM); break; case MQCC_FAILED : memcpy((char *)&cc_l,"FAILED ",MAX_B_LEN_DATAITEM); break; default : memcpy((char *)&cc_l,"UNKNOWN ",MAX_B_LEN_DATAITEM); break; } return cc_l; } #pragma page "void mq_channel_type_s(MQLONG cht,char *channel_type_s)" void mq_channel_type_s(MQLONG cht,char *channel_type_s) { switch (cht) { case MQCHT_SENDER : strcpy(channel_type_s,"SENDER"); break; case MQCHT_SERVER : strcpy(channel_type_s,"SERVER"); break; case MQCHT_RECEIVER : strcpy(channel_type_s,"RECEIVER"); break; case MQCHT_REQUESTER : strcpy(channel_type_s,"REQUESTER"); break; case MQCHT_SVRCONN : strcpy(channel_type_s,"SVRCONN"); break; case MQCHT_CLNTCONN : strcpy(channel_type_s,"CLNTCONN"); break; case MQCHT_CLUSRCVR : strcpy(channel_type_s,"CLUSRCVR"); break; case MQCHT_CLUSSDR : strcpy(channel_type_s,"CLUSSDR"); break; default : strcpy(channel_type_s,"UNKNOWN"); break; } } #pragma page "void mq_status_s(MQLONG cs,char *status_s)" void mq_status_s(MQLONG cs,char *status_s) { switch (cs) { case MQCHS_STOPPED_2 : strcpy(status_s,"Stopped"); break; case MQCHS_BINDING : strcpy(status_s,"Binding"); break; case MQCHS_STARTING : strcpy(status_s,"Starting"); break; case MQCHS_RUNNING : strcpy(status_s,"Running"); break; case MQCHS_PAUSED : strcpy(status_s,"Paused"); break; case MQCHS_STOPPING : strcpy(status_s,"Stopping"); break; case MQCHS_RETRYING : strcpy(status_s,"Retrying"); break; case MQCHS_STOPPED : strcpy(status_s,"Stopped"); break; case MQCHS_REQUESTING : strcpy(status_s,"Requesting"); break; case MQCHS_INITIALIZING : strcpy(status_s,"Initializing"); break; default : strcpy(status_s,"Unknown"); break; } } #pragma page "short mq_asapx_status(MQLONG cs)" short mq_asapx_status(MQLONG cs) { asapx_state_t status; switch (cs) { case MQCHS_STOPPED_2 : status = ASAPX_ENM_STATUS_EXISTS; break; case MQCHS_BINDING : status = ASAPX_ENM_STATUS_EXISTS; break; case MQCHS_STARTING : status = ASAPX_ENM_STATUS_ODD; break; case MQCHS_RUNNING : status = ASAPX_ENM_STATUS_UP; break; case MQCHS_PAUSED : status = ASAPX_ENM_STATUS_ODD; break; case MQCHS_STOPPING : status = ASAPX_ENM_STATUS_ODD; break; case MQCHS_RETRYING : status = ASAPX_ENM_STATUS_CRITICAL; break; case MQCHS_STOPPED : status = ASAPX_ENM_STATUS_DOWN; break; case MQCHS_REQUESTING : status = ASAPX_ENM_STATUS_ODD; break; case MQCHS_INITIALIZING : status = ASAPX_ENM_STATUS_ODD; break; default : status = ASAPX_ENM_STATUS_CRITICAL; break; } return (short)status; } #pragma section misc short mqm_object_pkey_add(char *pkey,int pkey_len_max,int *pkey_len ,const char *domainid_root,int domainid_root_len ,const char *qmgr_name,int qmgr_name_len ,const char *object_class,int object_class_len ,const char *object_subclass,int object_subclass_len ,const char *object_name,int object_name_len ,const char *job_name,int job_name_len) { char *s; s = pkey;*pkey_len = 0; if ((*pkey_len + domainid_root_len) > pkey_len_max) return false; memcpy(s + *pkey_len,domainid_root,domainid_root_len); *pkey_len += domainid_root_len; if ((*pkey_len + 1) > pkey_len_max) return false; memcpy(s + *pkey_len,"\\",1); *pkey_len += 1; if ((*pkey_len + qmgr_name_len) > pkey_len_max) return false; memcpy(s + *pkey_len,qmgr_name,qmgr_name_len); *pkey_len += qmgr_name_len; if ((*pkey_len + 1) > pkey_len_max) return false; memcpy(s + *pkey_len,"\\",1); *pkey_len += 1; if ((*pkey_len + object_class_len) > pkey_len_max) return false; memcpy(s + *pkey_len,object_class,object_class_len); *pkey_len += object_class_len; if (object_subclass_len) { if ((*pkey_len + 1) > pkey_len_max) return false; memcpy(s + *pkey_len,"-",1); *pkey_len += 1; if ((*pkey_len + object_subclass_len) > pkey_len_max) return false; memcpy(s + *pkey_len,object_subclass,object_subclass_len); *pkey_len += object_subclass_len; } if ((*pkey_len + 1) > pkey_len_max) return false; memcpy(s + *pkey_len,"\\",1); *pkey_len += 1; if ((*pkey_len + object_name_len) > pkey_len_max) return false; memcpy(s + *pkey_len,object_name,object_name_len); *pkey_len += object_name_len; if (job_name_len) { if ((*pkey_len + 1) > pkey_len_max) return false; memcpy(s + *pkey_len,"\\",1); *pkey_len += 1; if ((*pkey_len + job_name_len) > pkey_len_max) return false; memcpy(s + *pkey_len,job_name,job_name_len); *pkey_len += job_name_len; } return true; } #pragma page "int mqm_exclude_queue_name(char *queue_name)" int mqm_exclude_queue_name(char *queue_name) { if (prc_exclude_q_system) if (!gen_strmatch(queue_name,"SYSTEM.*",1)) return true; if (prc_exclude_q_model) if (!gen_strmatch(queue_name,"MODEL_*",1)) return true; if (prc_exclude_q_temp) if (!gen_strmatch(queue_name,"MQAI.*",1)) return true; return false; } #pragma page "int mqm_exclude_channel_name(char *channel_name)" int mqm_exclude_channel_name(char *channel_name) { if (prc_exclude_chl_system) if (!gen_strmatch(channel_name,"SYSTEM.*",1)) return true; if (prc_exclude_chl_model) if (!gen_strmatch(channel_name,"*.MODEL.*",1)) return true; return false; } #pragma page "int mqm_exclude_channel_type(MQLONG channel_type)" int mqm_exclude_channel_type(channel_type) { int excluded; switch (channel_type) { case MQCHT_SENDER : excluded = prc_exclude_cht_sender; break; case MQCHT_SERVER : excluded = prc_exclude_cht_server; break; case MQCHT_RECEIVER : excluded = prc_exclude_cht_receiver; break; case MQCHT_REQUESTER : excluded = prc_exclude_cht_requester; break; case MQCHT_SVRCONN : excluded = prc_exclude_cht_svrconn; break; case MQCHT_CLNTCONN : excluded = prc_exclude_cht_clntconn; break; case MQCHT_CLUSRCVR : excluded = prc_exclude_cht_clusrcvr; break; case MQCHT_CLUSSDR : excluded = prc_exclude_cht_clussdr; break; default : excluded = false; break; } return excluded; } #pragma section mqm #pragma page "int mqm_qs_ctrl_cmp(mqm_qs_ctrl_t *s,mqm_qs_ctrl_t *t,char *r,size_t cl,treecmp_t ct)" int mqm_qs_ctrl_cmp(mqm_qs_ctrl_t *s,mqm_qs_ctrl_t *t,char *r,size_t cl,treecmp_t ct) { int cmp; switch (ct) { case TCKEY : cmp = strcmp(r,t->pkey); break; default : cmp = strcmp(s->pkey,t->pkey); break; } return cmp; } #pragma page "int mqm_ci_ctrl_cmp(mqm_ci_ctrl_t *s,mqm_qs_ctrl_t *t,char *r,size_t cl,treecmp_t ct)" int mqm_ci_ctrl_cmp(mqm_ci_ctrl_t *s,mqm_ci_ctrl_t *t,char *r,size_t cl,treecmp_t ct) { int cmp; switch (ct) { case TCKEY : cmp = strcmp(r,t->pkey); break; default : cmp = strcmp(s->pkey,t->pkey); break; } return cmp; } #pragma page "int mqm_cs_ctrl_cmp(mqm_cs_ctrl_t *s,mqm_qs_ctrl_t *t,char *r,size_t cl,treecmp_t ct)" int mqm_cs_ctrl_cmp(mqm_cs_ctrl_t *s,mqm_cs_ctrl_t *t,char *r,size_t cl,treecmp_t ct) { int cmp; switch (ct) { case TCKEY : cmp = strcmp(r,t->pkey); break; default : cmp = strcmp(s->pkey,t->pkey); break; } return cmp; } #pragma page /* * sample_interval -> 10**-2 * JULIANTIMESTAMP -> 10**-6 */ long _mqm_sample_delta(long long *jt1,long sample_interval) { long long jt2,sample_delta; jt2 = JULIANTIMESTAMP(3); sample_delta = (sample_interval * 10000ll) - (jt2 - *jt1); if (sample_delta < 0ll) sample_delta = 0ll; *jt1 = jt2 + sample_delta; return (long)((sample_delta + 5000ll) / 10000ll); } #pragma page "void mqm_srv_add(void)" void mqm_srv_add(void) { gen_reset_srv(); srv_ulo_max = MQM_ULO_MAX; srv_dev_reclen = sizeof(mqm_dat_t); strcpy(srv_name,"#MQM"); gen_add_srv(); } void mqm_ulo_add(void) { gen_reset_ulo(); ulo_srv = MQM_SRV; ulo_typ = zems_val_obj_typ_process; ulo_dev_reclen = sizeof(mqm_dat_t); strcpy(ulo_name,srv_name); strcat(ulo_name,".QMGR"); strcat(ulo_qname,prc_qmgr_name); gen_add_ulo(); } #pragma page "void mqm_ini(int i)" void mqm_ini(int i) { int o = i - srv[MQM_SRV].ulo_base; mqm_dat[o].connection_handle = -1l; mqm_dat[o].asapx_q_reply_handle = -1l; mqm_dat[o].asapx_q_reply_seqno = 0l; mqm_dat[o].optbag_handle = MQHB_UNUSABLE_HBAG; mqm_dat[o].reqbag_handle = MQHB_UNUSABLE_HBAG; mqm_dat[o].rspbag_handle = MQHB_UNUSABLE_HBAG; mqm_dat[o].queue.raise_alert = true; mqm_dat[o].channel.raise_alert = true; flistini(&fl_te); flistbld(&fl_te,MQM_QS_CTRL_MAX+MQM_CI_CTRL_MAX+MQM_CS_CTRL_MAX,te); listini(&fl_mqm_qs_ctrl,FIFO,&fl_te); listfll(&fl_mqm_qs_ctrl,MQM_QS_CTRL_MAX,mqm_qs_ctrl,sizeof(mqm_qs_ctrl_t)); treeini(&tr_mqm_qs_ctrl,UKEY,&fl_te,(treecmp)mqm_qs_ctrl_cmp); listini(&fl_mqm_ci_ctrl,FIFO,&fl_te); listfll(&fl_mqm_ci_ctrl,MQM_CI_CTRL_MAX,mqm_ci_ctrl,sizeof(mqm_ci_ctrl_t)); treeini(&tr_mqm_ci_ctrl,UKEY,&fl_te,(treecmp)mqm_ci_ctrl_cmp); listini(&fl_mqm_cs_ctrl,FIFO,&fl_te); listfll(&fl_mqm_cs_ctrl,MQM_CS_CTRL_MAX,mqm_cs_ctrl,sizeof(mqm_cs_ctrl_t)); treeini(&tr_mqm_cs_ctrl,UKEY,&fl_te,(treecmp)mqm_cs_ctrl_cmp); } /* tree-scan for asap reporting of MQ queue objects -- lifecycle management of MQ objects based on ageing (qs_ctrl_ptr->age) */ #pragma page "void qs_ctrl_scan(int i,int *o_t,int *o_e,int *o_o,int terminate)" void qs_ctrl_scan(int i,int *o_t,int *o_e,int *o_o,int terminate) { int o = i - srv[MQM_SRV].ulo_base,ok;mqm_qs_ctrl_t *qs_ctrl_ptr; for (qs_ctrl_ptr = listsrc(&tr_mqm_qs_ctrl,FIRST);qs_ctrl_ptr;qs_ctrl_ptr = listsrc(&tr_mqm_qs_ctrl,NEXT)) { if (terminate) qs_ctrl_ptr->age = 0; if (qs_ctrl_ptr->age) { ok = qs_ctrl_ptr->pkey_len <= MAX_B_LEN_DOMAINID; if (ok) { if (!qs_ctrl_ptr->excluded) { if (!qs_ctrl_ptr->registered) { DOMAIN_INI(&qs_ctrl_ptr->domain ,qs_ctrl_ptr->pkey,(short)strlen(qs_ctrl_ptr->pkey) ,&asapenv,7 ,MQ_ENM_DIT_QUEUE_DEPTH,ASAPX_ENM_MATH_REPLACE ,MQ_ENM_DIT_QUEUE_DEPTH_MAX,ASAPX_ENM_MATH_REPLACE); qs_ctrl_ptr->registered = true; } DOMAIN_SET_DATA_ITEM(&qs_ctrl_ptr->domain,MQ_ENM_DIT_QUEUE_DEPTH,qs_ctrl_ptr->qs_attr.depth); DOMAIN_SET_DATA_ITEM(&qs_ctrl_ptr->domain,MQ_ENM_DIT_QUEUE_DEPTH_MAX,qs_ctrl_ptr->qs_attr.depth_max); DOMAIN_SET(&qs_ctrl_ptr->domain); qs_ctrl_ptr->age = 0; } } *o_t += 1; /* objects total */ *o_e += qs_ctrl_ptr->excluded; /* objects excluded */ *o_o += ok; /* objects okay */ } else { if (qs_ctrl_ptr->registered) { if (DOMAIN_STOP_(&qs_ctrl_ptr->domain,true)) qs_ctrl_ptr->registered = false; } else listput(&fl_mqm_qs_ctrl,treedel(&tr_mqm_qs_ctrl,qs_ctrl_ptr)); } } } /* tree-scan for asap reporting of configured MQ channel objects -- lifecycle management of MQ objects based on ageing (ci_ctrl_ptr->age) */ #pragma page "void ci_ctrl_scan(int i,int *o_t,int *o_e,int *o_o,int terminate)" void ci_ctrl_scan(int i,int *o_t,int *o_e,int *o_o,int terminate) { int o = i - srv[MQM_SRV].ulo_base,ok;mqm_ci_ctrl_t *ci_ctrl_ptr;char status_s[MAX_B_LEN_STATETEXT+1]; for (ci_ctrl_ptr = listsrc(&tr_mqm_ci_ctrl,FIRST);ci_ctrl_ptr;ci_ctrl_ptr = listsrc(&tr_mqm_ci_ctrl,NEXT)) { if (terminate) ci_ctrl_ptr->age = 0; if (ci_ctrl_ptr->age) { ok = ci_ctrl_ptr->pkey_len <= MAX_B_LEN_DOMAINID; if (ok) { if (!ci_ctrl_ptr->excluded) { if (!ci_ctrl_ptr->registered) { DOMAIN_INI(&ci_ctrl_ptr->domain ,ci_ctrl_ptr->pkey,(short)strlen(ci_ctrl_ptr->pkey) ,&asapenv,7 ,MQ_ENM_DIT_CHANNEL_BYTES_SEND,ASAPX_ENM_MATH_ADD ,MQ_ENM_DIT_CHANNEL_BYTES_RCVD,ASAPX_ENM_MATH_ADD ,MQ_ENM_DIT_CHANNEL_MSGS,ASAPX_ENM_MATH_ADD); ci_ctrl_ptr->registered = true; } mq_status_s(ci_ctrl_ptr->ci_attr.status,status_s); DOMAIN_SET_STATE(&ci_ctrl_ptr->domain,mq_asapx_status(ci_ctrl_ptr->ci_attr.status),status_s,(short)strlen(status_s)); DOMAIN_SET(&ci_ctrl_ptr->domain); DOMAIN_STOP(&ci_ctrl_ptr->domain,false); ci_ctrl_ptr->age = 0; } } *o_t += 1; /* objects total */ *o_e += ci_ctrl_ptr->excluded; /* objects excluded */ *o_o += ok; /* objects okay */ } else { if (ci_ctrl_ptr->registered) { if (DOMAIN_STOP_(&ci_ctrl_ptr->domain,true)) ci_ctrl_ptr->registered = false; } else listput(&fl_mqm_ci_ctrl,treedel(&tr_mqm_ci_ctrl,ci_ctrl_ptr)); } } } /* tree-scan for asap reporting of active MQ channel objects -- lifecycle management of MQ objects based on ageing (cs_ctrl_ptr->age) */ #pragma page "void cs_ctrl_scan(int i,int *o_t,int *o_e,int *o_o,int terminate)" void cs_ctrl_scan(int i,int *o_t,int *o_e,int *o_o,int terminate) { int o = i - srv[MQM_SRV].ulo_base,ok;mqm_cs_ctrl_t *cs_ctrl_ptr;char status_s[MAX_B_LEN_STATETEXT+1];short asapx_status;long duration,delta; for (cs_ctrl_ptr = listsrc(&tr_mqm_cs_ctrl,FIRST);cs_ctrl_ptr;cs_ctrl_ptr = listsrc(&tr_mqm_cs_ctrl,NEXT)) { if (terminate) cs_ctrl_ptr->age = 0; if (cs_ctrl_ptr->age) { ok = cs_ctrl_ptr->pkey_len <= MAX_B_LEN_DOMAINID; if (ok) { if (!cs_ctrl_ptr->excluded) { if (!cs_ctrl_ptr->registered) { DOMAIN_INI(&cs_ctrl_ptr->domain ,cs_ctrl_ptr->pkey,(short)strlen(cs_ctrl_ptr->pkey) ,&asapenv,7 ,MQ_ENM_DIT_CHANNEL_BYTES_SEND,ASAPX_ENM_MATH_ADD ,MQ_ENM_DIT_CHANNEL_BYTES_RCVD,ASAPX_ENM_MATH_ADD ,MQ_ENM_DIT_CHANNEL_MSGS,ASAPX_ENM_MATH_ADD); cs_ctrl_ptr->registered = true; } if (cs_ctrl_ptr->cs_attr.status == MQCHS_RUNNING) { DOMAIN_SET_DATA_ITEM(&cs_ctrl_ptr->domain,MQ_ENM_DIT_CHANNEL_BYTES_SEND,cs_ctrl_ptr->cs_attr.bytes_send_curr - cs_ctrl_ptr->cs_attr.bytes_send_prev); DOMAIN_SET_DATA_ITEM(&cs_ctrl_ptr->domain,MQ_ENM_DIT_CHANNEL_BYTES_RCVD,cs_ctrl_ptr->cs_attr.bytes_rcvd_curr - cs_ctrl_ptr->cs_attr.bytes_rcvd_prev); DOMAIN_SET_DATA_ITEM(&cs_ctrl_ptr->domain,MQ_ENM_DIT_CHANNEL_MSGS,cs_ctrl_ptr->cs_attr.msgs_curr - cs_ctrl_ptr->cs_attr.msgs_prev); } else { /* don't bump invalid statistics -- channel status will signal this condition */ DOMAIN_SET_DATA_ITEM(&cs_ctrl_ptr->domain,MQ_ENM_DIT_CHANNEL_BYTES_SEND,0ll); DOMAIN_SET_DATA_ITEM(&cs_ctrl_ptr->domain,MQ_ENM_DIT_CHANNEL_BYTES_RCVD,0ll); DOMAIN_SET_DATA_ITEM(&cs_ctrl_ptr->domain,MQ_ENM_DIT_CHANNEL_MSGS,0ll); } mq_status_s(cs_ctrl_ptr->cs_attr.status,status_s); asapx_status = mq_asapx_status(cs_ctrl_ptr->cs_attr.status); if (cs_ctrl_ptr->cs_attr.status == MQCHS_STOPPED) { if (cs_ctrl_ptr->cs_attr.stop_request) { /* normal channel termination -- turn it grey */ cs_ctrl_ptr->cs_attr.status = MQCHS_STOPPED_2; asapx_status = mq_asapx_status(cs_ctrl_ptr->cs_attr.status); } else { /* abormal channel termination -- maybe we should suppress it based on filter criteria */ if (cs_ctrl_ptr->filter) { switch (cs_ctrl_ptr->channel_type) { case MQCHT_SENDER : /* if no data in transmit queue (xmit_queue_depth) suppress abnormal channel termination since there is no work to be done */ if (cs_ctrl_ptr->cs_attr.xmit_queue_depth == 0l) { cs_ctrl_ptr->cs_attr.status = MQCHS_STOPPED_2; asapx_status = mq_asapx_status(cs_ctrl_ptr->cs_attr.status); } break; default : break; } } } } if (!prc_channel_alert) asapx_status = ASAPX_ENM_STATUS_EXISTS; DOMAIN_SET_STATE(&cs_ctrl_ptr->domain,asapx_status,status_s,(short)strlen(status_s)); DOMAIN_SET(&cs_ctrl_ptr->domain); if (cs_ctrl_ptr->cs_attr.status == MQCHS_STOPPED_2) DOMAIN_STOP(&cs_ctrl_ptr->domain,false); cs_ctrl_ptr->cs_attr.bytes_send_prev = cs_ctrl_ptr->cs_attr.bytes_send_curr; cs_ctrl_ptr->cs_attr.bytes_rcvd_prev = cs_ctrl_ptr->cs_attr.bytes_rcvd_curr; cs_ctrl_ptr->cs_attr.msgs_prev = cs_ctrl_ptr->cs_attr.msgs_curr; cs_ctrl_ptr->age = 0; } } *o_t += 1; /* object totals */ *o_e += cs_ctrl_ptr->excluded; /* objects excluded */ *o_o += ok; /* objects okay */ } else { if (cs_ctrl_ptr->registered) { if (DOMAIN_STOP_(&cs_ctrl_ptr->domain,true)) cs_ctrl_ptr->registered = false; } else listput(&fl_mqm_cs_ctrl,treedel(&tr_mqm_cs_ctrl,cs_ctrl_ptr)); } } } #pragma page "int mqm_trigger_1(int i)" int mqm_trigger_1(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_clr(ulo[i].pth_stc); gen_stc_clr(ulo[i].wht_stc); ulo[i].rest_max = 0; ulo[i].rest_wht = MQM_WHT_TRIGGER_2; ulo[i].rest_ulo = i; gen_stc_psh(ulo[i].wht_stc,MQM_WHT_ASAPX_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_RSPBAG_DEL_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_REQBAG_DEL_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_OPTBAG_DEL_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_RSPBAG_GET_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_REQBAG_PUT_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_REQBAG_SET_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_OPTBAG_SET_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_RSPBAG_ADD_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_REQBAG_ADD_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_QS_OPTBAG_ADD_1,i); if (mqm_dat[o].connection_handle == -1l) { gen_stc_psh(ulo[i].wht_stc,MQM_WHT_MQOPEN_1,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_MQCONN_1,i); } else { gen_stc_psh(ulo[i].pth_stc,MQM_WHT_MQCONN_1,i); gen_stc_psh(ulo[i].pth_stc,MQM_WHT_MQOPEN_1,i); } return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_mqconn_1(int i)" int mqm_mqconn_1(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHCONN connection_handle = -1l; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_MQCONN_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_CONN; MQCONN(ulo[i].qname,&connection_handle,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); if (mqm_dat[o].queue.compcode == MQCC_OK) mqm_dat[o].connection_handle = connection_handle; err.numl = mqm_dat[o].queue.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_mqopen_1(int i)" int mqm_mqopen_1(int i) { int o = i - srv[MQM_SRV].ulo_base; MQHOBJ asapx_q_reply_handle = -1l;MQOD asapx_q_reply_od = {MQOD_DEFAULT};char seqno[MAX_B_LEN_SEQNO+1+1]; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_MQOPEN_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_OPEN; sprintf(seqno,".%1li",mqm_dat[o].asapx_q_reply_seqno); strcpy(asapx_q_reply_od.ObjectName,prc_asapx_q_model); strcpy(asapx_q_reply_od.DynamicQName,prc_asapx_q_reply); strcat(asapx_q_reply_od.DynamicQName,seqno); strcpy(asapx_q_reply_od.ObjectQMgrName,prc_qmgr_name); MQOPEN(mqm_dat[o].connection_handle,&asapx_q_reply_od,MQOO_INPUT_SHARED | MQOO_INQUIRE,&asapx_q_reply_handle,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); switch(mqm_dat[o].queue.compcode) { case MQCC_OK : mqm_dat[o].asapx_q_reply_handle = asapx_q_reply_handle; break; default : /* if MQ cleanup of dynamic ASAP.REPLYX queue fails by MQ itself, create new ASAPX.REPLYX queue with new sequence number */ if (mqm_dat[o].queue.reason == MQRC_OBJECT_ALREADY_EXISTS) mqm_dat[o].asapx_q_reply_seqno += 1l,mqm_dat[o].asapx_q_reply_seqno %= prc_asapx_q_reply_seqno_max; break; } err.numl = mqm_dat[o].queue.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_qs_optbag_add_1(int i)" int mqm_inq_qs_optbag_add_1(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHBAG optbag_handle = MQHB_UNUSABLE_HBAG; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_OPTBAG_ADD_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_CREATEBAG; mqCreateBag(MQCBO_ADMIN_BAG,&optbag_handle,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); if (mqm_dat[o].queue.compcode == MQCC_OK) mqm_dat[o].optbag_handle = optbag_handle; err.numl = mqm_dat[o].queue.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_qs_reqbag_add_1(int i)" int mqm_inq_qs_reqbag_add_1(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHBAG reqbag_handle = MQHB_UNUSABLE_HBAG; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_REQBAG_ADD_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_CREATEBAG; mqCreateBag(MQCBO_ADMIN_BAG,&reqbag_handle,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); if (mqm_dat[o].queue.compcode == MQCC_OK) mqm_dat[o].reqbag_handle = reqbag_handle; err.numl = mqm_dat[o].queue.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_qs_rsqbag_add_1(int i)" int mqm_inq_qs_rspbag_add_1(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHBAG rspbag_handle = MQHB_UNUSABLE_HBAG; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_RSPBAG_ADD_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_CREATEBAG; mqCreateBag(MQCBO_ADMIN_BAG,&rspbag_handle,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); if (mqm_dat[o].queue.compcode == MQCC_OK) mqm_dat[o].rspbag_handle = rspbag_handle; err.numl = mqm_dat[o].queue.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_qs_optbag_set_1(int i)" int mqm_inq_qs_optbag_set_1(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_OPTBAG_SET_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_ADDINT; mqAddInteger(mqm_dat[o].optbag_handle,MQIACF_WAIT_INTERVAL,MQWI_UNLIMITED,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_qs_reqbag_set_1(int i)" int mqm_inq_qs_reqbag_set_1(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_REQBAG_SET_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_ADDSTRING; mqAddString(mqm_dat[o].reqbag_handle,MQCA_Q_NAME,MQBL_NULL_TERMINATED,"*",&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_ADDINT; mqAddInteger(mqm_dat[o].reqbag_handle,MQIA_Q_TYPE,MQQT_LOCAL,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_ADDINQ; mqAddInquiry(mqm_dat[o].reqbag_handle,MQIA_CURRENT_Q_DEPTH,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_ADDINQ; mqAddInquiry(mqm_dat[o].reqbag_handle,MQIA_MAX_Q_DEPTH,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_qs_reqbag_put_1(int i)" int mqm_inq_qs_reqbag_put_1(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_REQBAG_PUT_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_EXECUTE; mqExecute(mqm_dat[o].connection_handle ,MQCMD_INQUIRE_Q ,mqm_dat[o].optbag_handle ,mqm_dat[o].reqbag_handle ,mqm_dat[o].rspbag_handle ,MQHO_NONE ,mqm_dat[o].asapx_q_reply_handle ,&mqm_dat[o].queue.compcode ,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "MQLONG qs_attr_get_1(int i,MQLONG bagid,MQCHAR *queue_name,MQLONG *queue_name_len,MQLONG *depth,MQLONG *depth_max)" MQLONG qs_attr_get_1(int i,MQLONG bagid,MQCHAR *queue_name,MQLONG *queue_name_len,MQLONG *depth,MQLONG *depth_max) { int o = i - srv[MQM_SRV].ulo_base; mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_INQBAG; mqInquireBag(mqm_dat[o].rspbag_handle,MQHA_BAG_HANDLE,bagid,&mqm_dat[o].attrbag_handle,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); if (mqm_dat[o].queue.compcode) return mqm_dat[o].queue.compcode; mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_INQSTRING; mqInquireString(mqm_dat[o].attrbag_handle,MQCA_Q_NAME,0,MAX_B_LEN_QUEUE_NAME,queue_name,queue_name_len,NULL,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); if (mqm_dat[o].queue.compcode) return mqm_dat[o].queue.compcode; mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_INQINT; mqInquireInteger(mqm_dat[o].attrbag_handle,MQIA_CURRENT_Q_DEPTH,MQIND_NONE,depth,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); if (mqm_dat[o].queue.compcode) return mqm_dat[o].queue.compcode; mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_INQINT; mqInquireInteger(mqm_dat[o].attrbag_handle,MQIA_MAX_Q_DEPTH,MQIND_NONE,depth_max,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); if (mqm_dat[o].queue.compcode) return mqm_dat[o].queue.compcode; return mqm_dat[o].queue.compcode; } #pragma page "int qs_attr_set_1(int i,char *queue_name,MQLONG queue_name_len,MQLONG depth,MQLONG depth_max,int excluded)" int qs_attr_set_1(int i,char *queue_name,MQLONG queue_name_len,MQLONG depth,MQLONG depth_max,int excluded) { int o = i - srv[MQM_SRV].ulo_base,qs_pkey_len;mqm_qs_ctrl_t *qs_ctrl_ptr;char qs_pkey[MAX_B_LEN_QS_PKEY+1]; if (!mqm_object_pkey_add(qs_pkey,MAX_B_LEN_QS_PKEY,&qs_pkey_len ,prc_domainid_object_root,(int)strlen(prc_domainid_object_root) ,prc_qmgr_name,(int)strlen(prc_qmgr_name) ,mq_obj_class[MQ_ENM_OBJ_CLASS_QUEUE],(int)strlen(mq_obj_class[MQ_ENM_OBJ_CLASS_QUEUE]) ,"",0 ,queue_name,queue_name_len ,"",0)) gen_exit(-1,"qs_attr_set_1:mqm_object_pkey_add failed due to domainid name length error"); qs_pkey[qs_pkey_len] = '\0'; if (!(qs_ctrl_ptr = treesrc(&tr_mqm_qs_ctrl,&qs_pkey,0,EQU,FIRST))) { if (!(qs_ctrl_ptr = listget(&fl_mqm_qs_ctrl))) return false; strcpy(qs_ctrl_ptr->pkey,qs_pkey); qs_ctrl_ptr->pkey_len = qs_pkey_len; qs_ctrl_ptr->age = 0; qs_ctrl_ptr->registered = false; treeins(&tr_mqm_qs_ctrl,qs_ctrl_ptr); } qs_ctrl_ptr->age++; qs_ctrl_ptr->excluded = excluded; qs_ctrl_ptr->qs_attr.depth = depth; qs_ctrl_ptr->qs_attr.depth_max = depth_max; return true; } #pragma page "MQLONG _mqm_inq_qs_rspbag_get_1(int i,MQLONG bags)" MQLONG _mqm_inq_qs_rspbag_get_1(int i,MQLONG bags) { int o = i - srv[MQM_SRV].ulo_base;MQLONG j,queue_name_len,depth,depth_max,compcode;MQCHAR queue_name[MAX_B_LEN_QUEUE_NAME+1]; compcode = 0l; j = 0l; while ((j != bags) && (!compcode)) { compcode = qs_attr_get_1(i,j,queue_name,&queue_name_len,&depth,&depth_max); if (!compcode) { queue_name_len = strslen(queue_name,queue_name_len); qs_attr_set_1(i,queue_name,queue_name_len,depth,depth_max,mqm_exclude_queue_name(queue_name)); } j++; } return compcode; } #pragma page "int mqm_inq_qs_rspbag_get_1(int i)" int mqm_inq_qs_rspbag_get_1(int i) { int o = i - srv[MQM_SRV].ulo_base;MQLONG bags; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_RSPBAG_GET_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_CNTITEMS; mqCountItems(mqm_dat[o].rspbag_handle,MQHA_BAG_HANDLE,&bags,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; err.numl = _mqm_inq_qs_rspbag_get_1(i,bags); return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_qs_optbag_del_1(int i)" int mqm_inq_qs_optbag_del_1(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_OPTBAG_DEL_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_DELETEBAG; mqDeleteBag(&mqm_dat[o].optbag_handle,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) gen_exit(-1,"mqm_inq_qs_optbag_del_1:mqDeleteBag - ERROR: cc = %i reason = %i\n",mqm_dat[o].queue.compcode,mqm_dat[o].queue.reason); mqm_dat[o].optbag_handle = MQHB_UNUSABLE_HBAG; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_qs_reqbag_del_1(int i)" int mqm_inq_qs_reqbag_del_1(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_REQBAG_DEL_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_DELETEBAG; mqDeleteBag(&mqm_dat[o].reqbag_handle,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) gen_exit(-1,"mqm_inq_qs_reqbag_del_1:mqDeleteBag - ERROR: cc = %i reason = %i\n",mqm_dat[o].queue.compcode,mqm_dat[o].queue.reason); mqm_dat[o].reqbag_handle = MQHB_UNUSABLE_HBAG; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_qs_rspbag_del_1(int i)" int mqm_inq_qs_rspbag_del_1(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_QS_RSPBAG_DEL_1,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_DELETEBAG; mqDeleteBag(&mqm_dat[o].rspbag_handle,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) gen_exit(-1,"mqm_inq_qs_rspbag_del_1:mqDeleteBag - ERROR: cc = %i reason = %i\n",mqm_dat[o].queue.compcode,mqm_dat[o].queue.reason); mqm_dat[o].rspbag_handle = MQHB_UNUSABLE_HBAG; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_asapx_1(int i)" int mqm_asapx_1(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_ASAPX_1,i); mqm_dat[o].queue.object = 0; mqm_dat[o].queue.object_excluded = 0; mqm_dat[o].queue.object_ok = 0; qs_ctrl_scan(i,&mqm_dat[o].queue.object,&mqm_dat[o].queue.object_excluded,&mqm_dat[o].queue.object_ok,false); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_AGENT_OPS_TYPE,mqa_ops_type_l(mqm_dat[o].queue.ops_type)); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_AGENT_REASON,mqm_dat[o].queue.reason); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_AGENT_COMPCODE,mq_cc_l(mqm_dat[o].queue.compcode)); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_OBJECT_UTIL,(MQM_QS_CTRL_MAX-flistcnt(&fl_mqm_qs_ctrl)) * 100ll/MQM_QS_CTRL_MAX); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_OBJECT,(long long)mqm_dat[o].queue.object); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_OBJECT_BAD,(long long)(mqm_dat[o].queue.object-mqm_dat[o].queue.object_ok)); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_OBJECT_EXCLUDED,(long long)mqm_dat[o].queue.object_excluded); DOMAIN_SET_STATE(&domain_queue,(short)ASAPX_ENM_STATUS_UP); DOMAIN_SET(&domain_queue); mqm_dat[o].queue.raise_alert = false; gen_stc_psh(act_stc,MQM_WHT_TRIGGER_3,i); return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_trigger_2(int i)" int mqm_trigger_2(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_clr(ulo[i].pth_stc); gen_stc_clr(ulo[i].wht_stc); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_ASAPX_2,i); return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_asapx_2(int i)" int mqm_asapx_2(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_ASAPX_2,i); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_AGENT_OPS_TYPE,mqa_ops_type_l(mqm_dat[o].queue.ops_type)); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_AGENT_REASON,mqm_dat[o].queue.reason); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_AGENT_COMPCODE,mq_cc_l(mqm_dat[o].queue.compcode)); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_OBJECT_UTIL,(MQM_QS_CTRL_MAX-flistcnt(&fl_mqm_qs_ctrl)) * 100ll/MQM_QS_CTRL_MAX); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_OBJECT,0ll); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_OBJECT_BAD,0ll); DOMAIN_SET_DATA_ITEM(&domain_queue,MQA_ENM_DIT_OBJECT_EXCLUDED,0ll); DOMAIN_SET_STATE(&domain_queue,(mqm_dat[o].queue.raise_alert) ? (short)ASAPX_ENM_STATUS_CRITICAL : (short)ASAPX_ENM_STATUS_UP); DOMAIN_SET(&domain_queue); mqm_dat[o].queue.raise_alert = true; gen_stc_psh(act_stc,MQM_WHT_TRIGGER_3,i); return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_trigger_3(int i)" int mqm_trigger_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_clr(ulo[i].pth_stc); gen_stc_clr(ulo[i].wht_stc); ulo[i].rest_max = 0; ulo[i].rest_wht = MQM_WHT_TRIGGER_4; ulo[i].rest_ulo = i; gen_stc_psh(ulo[i].wht_stc,MQM_WHT_ASAPX_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_RSPBAG_DEL_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_REQBAG_DEL_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_OPTBAG_DEL_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_RSPBAG_GET_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_REQBAG_PUT_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_REQBAG_SET_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_OPTBAG_SET_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_RSPBAG_ADD_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_REQBAG_ADD_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CS_OPTBAG_ADD_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_RSPBAG_DEL_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_REQBAG_DEL_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_OPTBAG_DEL_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_RSPBAG_GET_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_REQBAG_PUT_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_REQBAG_SET_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_OPTBAG_SET_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_RSPBAG_ADD_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_REQBAG_ADD_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_INQ_CI_OPTBAG_ADD_3,i); if (mqm_dat[o].connection_handle == -1l) { gen_stc_psh(ulo[i].wht_stc,MQM_WHT_MQOPEN_3,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_MQCONN_3,i); } else { gen_stc_psh(ulo[i].pth_stc,MQM_WHT_MQCONN_3,i); gen_stc_psh(ulo[i].pth_stc,MQM_WHT_MQOPEN_3,i); } return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_mqconn_3(int i)" int mqm_mqconn_3(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHCONN connection_handle = -1l; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_MQCONN_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_CONN; MQCONN(ulo[i].qname,&connection_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode == MQCC_OK) mqm_dat[o].connection_handle = connection_handle; err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_mqopen_3(int i)" int mqm_mqopen_3(int i) { int o = i - srv[MQM_SRV].ulo_base; MQHOBJ asapx_q_reply_handle = -1l;MQOD asapx_q_reply_od = {MQOD_DEFAULT};char seqno[MAX_B_LEN_SEQNO+1+1]; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_MQOPEN_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_OPEN; sprintf(seqno,".%1li",mqm_dat[o].asapx_q_reply_seqno); strcpy(asapx_q_reply_od.ObjectName,prc_asapx_q_model); strcpy(asapx_q_reply_od.DynamicQName,prc_asapx_q_reply); strcat(asapx_q_reply_od.DynamicQName,seqno); strcpy(asapx_q_reply_od.ObjectQMgrName,prc_qmgr_name); MQOPEN(mqm_dat[o].connection_handle,&asapx_q_reply_od,MQOO_INPUT_SHARED | MQOO_INQUIRE,&asapx_q_reply_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); switch(mqm_dat[o].channel.compcode) { case MQCC_OK : mqm_dat[o].asapx_q_reply_handle = asapx_q_reply_handle; break; default : /* if MQ cleanup of dynamic ASAP.REPLYX queue fails by MQ itself, create new ASAPX.REPLYX queue with new sequence number */ if (mqm_dat[o].channel.reason == MQRC_OBJECT_ALREADY_EXISTS) mqm_dat[o].asapx_q_reply_seqno += 1l,mqm_dat[o].asapx_q_reply_seqno %= prc_asapx_q_reply_seqno_max; break; } err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_ci_optbag_add_3(int i)" int mqm_inq_ci_optbag_add_3(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHBAG optbag_handle = MQHB_UNUSABLE_HBAG; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_OPTBAG_ADD_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_CREATEBAG; mqCreateBag(MQCBO_ADMIN_BAG,&optbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode == MQCC_OK) mqm_dat[o].optbag_handle = optbag_handle; err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_ci_reqbag_add_3(int i)" int mqm_inq_ci_reqbag_add_3(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHBAG reqbag_handle = MQHB_UNUSABLE_HBAG; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_REQBAG_ADD_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_CREATEBAG; mqCreateBag(MQCBO_ADMIN_BAG,&reqbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode == MQCC_OK) mqm_dat[o].reqbag_handle = reqbag_handle; err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_ci_rsqbag_add_3(int i)" int mqm_inq_ci_rspbag_add_3(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHBAG rspbag_handle = MQHB_UNUSABLE_HBAG; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_RSPBAG_ADD_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_CREATEBAG; mqCreateBag(MQCBO_ADMIN_BAG,&rspbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode == MQCC_OK) mqm_dat[o].rspbag_handle = rspbag_handle; err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_ci_optbag_set_3(int i)" int mqm_inq_ci_optbag_set_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_OPTBAG_SET_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_ADDINT; mqAddInteger(mqm_dat[o].optbag_handle,MQIACF_WAIT_INTERVAL,MQWI_UNLIMITED,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_ci_reqbag_set_3(int i)" int mqm_inq_ci_reqbag_set_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_REQBAG_SET_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_ADDSTRING; mqAddString(mqm_dat[o].reqbag_handle,MQCACH_CHANNEL_NAME,MQBL_NULL_TERMINATED,"*",&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_ADDINT; mqAddInteger(mqm_dat[o].reqbag_handle,MQIACH_CHANNEL_TYPE,MQCHT_ALL,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_ci_reqbag_put_3(int i)" int mqm_inq_ci_reqbag_put_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_REQBAG_PUT_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_EXECUTE; mqExecute(mqm_dat[o].connection_handle ,MQCMD_INQUIRE_CHANNEL ,mqm_dat[o].optbag_handle ,mqm_dat[o].reqbag_handle ,mqm_dat[o].rspbag_handle ,MQHO_NONE ,mqm_dat[o].asapx_q_reply_handle ,&mqm_dat[o].channel.compcode ,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "MQLONG ci_attr_get_3(int i,MQLONG bagid,MQCHAR *channel_name,MQLONG *channel_name_len,MQLONG *channel_type)" MQLONG ci_attr_get_3(int i,MQLONG bagid,MQCHAR *channel_name,MQLONG *channel_name_len,MQLONG *channel_type) { int o = i - srv[MQM_SRV].ulo_base; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQBAG; mqInquireBag(mqm_dat[o].rspbag_handle,MQHA_BAG_HANDLE,bagid,&mqm_dat[o].attrbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQSTRING; mqInquireString(mqm_dat[o].attrbag_handle,MQCACH_CHANNEL_NAME,0,MAX_B_LEN_CHANNEL_NAME,channel_name,channel_name_len,NULL,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQINT; mqInquireInteger(mqm_dat[o].attrbag_handle,MQIACH_CHANNEL_TYPE,MQIND_NONE,channel_type,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; return mqm_dat[o].channel.compcode; } #pragma page "int ci_attr_set_3(int i,char *channel_name,MQLONG channel_name_len,MQLONG channel_type,int excluded)" int ci_attr_set_3(int i,char *channel_name,MQLONG channel_name_len,MQLONG channel_type,int excluded) { int o = i - srv[MQM_SRV].ulo_base,ci_pkey_len;mqm_ci_ctrl_t *ci_ctrl_ptr;char ci_type_s[MAX_B_LEN_CHANNEL_TYPE+1],ci_pkey[MAX_B_LEN_CI_PKEY+1]; mq_channel_type_s(channel_type,ci_type_s); if (!mqm_object_pkey_add(ci_pkey,MAX_B_LEN_CI_PKEY,&ci_pkey_len ,prc_domainid_object_root,(int)strlen(prc_domainid_object_root) ,prc_qmgr_name,(int)strlen(prc_qmgr_name) ,mq_obj_class[MQ_ENM_OBJ_CLASS_CHANNEL],(int)strlen(mq_obj_class[MQ_ENM_OBJ_CLASS_CHANNEL]) ,ci_type_s,(int)strlen(ci_type_s) ,channel_name,channel_name_len ,"",0)) gen_exit(-1,"ci_attr_set_3:mqm_object_pkey_add failed due to domainid name length error"); ci_pkey[ci_pkey_len] = '\0'; if (!(ci_ctrl_ptr = treesrc(&tr_mqm_ci_ctrl,&ci_pkey,0,EQU,FIRST))) { if (!(ci_ctrl_ptr = listget(&fl_mqm_ci_ctrl))) return false; strcpy(ci_ctrl_ptr->pkey,ci_pkey); ci_ctrl_ptr->pkey_len = ci_pkey_len; ci_ctrl_ptr->channel_type = channel_type; ci_ctrl_ptr->age = 0; ci_ctrl_ptr->registered = false; treeins(&tr_mqm_ci_ctrl,ci_ctrl_ptr); } ci_ctrl_ptr->age++; ci_ctrl_ptr->excluded = excluded; ci_ctrl_ptr->ci_attr.status = MQCHS_STOPPED_2; return true; } #pragma page "MQLONG _mqm_inq_ci_rspbag_get_3(int i,MQLONG bags)" MQLONG _mqm_inq_ci_rspbag_get_3(int i,MQLONG bags) { int o = i - srv[MQM_SRV].ulo_base;MQLONG j,channel_name_len,channel_type,compcode;MQCHAR channel_name[MAX_B_LEN_CHANNEL_NAME+1]; compcode = 0l; j = 0l; while ((j != bags) && (!compcode)) { compcode = ci_attr_get_3(i,j,channel_name,&channel_name_len,&channel_type); if (!compcode) { channel_name_len = strslen(channel_name,channel_name_len); ci_attr_set_3(i,channel_name,channel_name_len,channel_type,mqm_exclude_channel_type(channel_type) || mqm_exclude_channel_name(channel_name)); } j++; } return compcode; } #pragma page "int mqm_inq_ci_rspbag_get_3(int i)" int mqm_inq_ci_rspbag_get_3(int i) { int o = i - srv[MQM_SRV].ulo_base;MQLONG bags; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_RSPBAG_GET_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_CNTITEMS; mqCountItems(mqm_dat[o].rspbag_handle,MQHA_BAG_HANDLE,&bags,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; err.numl = _mqm_inq_ci_rspbag_get_3(i,bags); return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_ci_optbag_del_3(int i)" int mqm_inq_ci_optbag_del_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_OPTBAG_DEL_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_DELETEBAG; mqDeleteBag(&mqm_dat[o].optbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) gen_exit(-1,"mqm_inq_ci_optbag_del_3:mqDeleteBag - ERROR: cc = %i reason = %i\n",mqm_dat[o].channel.compcode,mqm_dat[o].channel.reason); mqm_dat[o].optbag_handle = MQHB_UNUSABLE_HBAG; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_ci_reqbag_del_3(int i)" int mqm_inq_ci_reqbag_del_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_REQBAG_DEL_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_DELETEBAG; mqDeleteBag(&mqm_dat[o].reqbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) gen_exit(-1,"mqm_inq_ci_reqbag_del_3:mqDeleteBag - ERROR: cc = %i reason = %i\n",mqm_dat[o].channel.compcode,mqm_dat[o].channel.reason); mqm_dat[o].reqbag_handle = MQHB_UNUSABLE_HBAG; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_ci_rspbag_del_3(int i)" int mqm_inq_ci_rspbag_del_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CI_RSPBAG_DEL_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_DELETEBAG; mqDeleteBag(&mqm_dat[o].rspbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) gen_exit(-1,"mqm_inq_ci_rspbag_del_3:mqDeleteBag - ERROR: cc = %i reason = %i\n",mqm_dat[o].channel.compcode,mqm_dat[o].channel.reason); mqm_dat[o].rspbag_handle = MQHB_UNUSABLE_HBAG; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_cs_optbag_add_3(int i)" int mqm_inq_cs_optbag_add_3(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHBAG optbag_handle = MQHB_UNUSABLE_HBAG; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_OPTBAG_ADD_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_CREATEBAG; mqCreateBag(MQCBO_ADMIN_BAG,&optbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode == MQCC_OK) mqm_dat[o].optbag_handle = optbag_handle; err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_cs_reqbag_add_3(int i)" int mqm_inq_cs_reqbag_add_3(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHBAG reqbag_handle = MQHB_UNUSABLE_HBAG; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_REQBAG_ADD_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_CREATEBAG; mqCreateBag(MQCBO_ADMIN_BAG,&reqbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode == MQCC_OK) mqm_dat[o].reqbag_handle = reqbag_handle; err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_cs_rspbag_add_3(int i)" int mqm_inq_cs_rspbag_add_3(int i) { int o = i - srv[MQM_SRV].ulo_base;MQHBAG rspbag_handle = MQHB_UNUSABLE_HBAG; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_RSPBAG_ADD_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_CREATEBAG; mqCreateBag(MQCBO_ADMIN_BAG,&rspbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode == MQCC_OK) mqm_dat[o].rspbag_handle = rspbag_handle; err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_cs_optbag_set_3(int i)" int mqm_inq_cs_optbag_set_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_OPTBAG_SET_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].queue.ops_type = MQA_ENM_OPS_TYPE_ADDINT; mqAddInteger(mqm_dat[o].optbag_handle,MQIACF_WAIT_INTERVAL,MQWI_UNLIMITED,&mqm_dat[o].queue.compcode,&mqm_dat[o].queue.reason); err.numl = mqm_dat[o].queue.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_cs_reqbag_set_3(int i)" int mqm_inq_cs_reqbag_set_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_REQBAG_SET_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_ADDSTRING; mqAddString(mqm_dat[o].reqbag_handle,MQCACH_CHANNEL_NAME,MQBL_NULL_TERMINATED,"*",&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_ADDINT; mqAddInteger(mqm_dat[o].reqbag_handle,MQIACH_CHANNEL_INSTANCE_TYPE,MQOT_CURRENT_CHANNEL,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_ADDINQ; mqAddInquiry(mqm_dat[o].reqbag_handle,MQIACH_BYTES_SENT,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_ADDINQ; mqAddInquiry(mqm_dat[o].reqbag_handle,MQIACH_BYTES_RCVD,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_ADDINQ; mqAddInquiry(mqm_dat[o].reqbag_handle,MQIACH_MSGS,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_ADDINQ; mqAddInquiry(mqm_dat[o].reqbag_handle,MQIACH_STOP_REQUESTED,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_ADDINQ; mqAddInquiry(mqm_dat[o].reqbag_handle,MQCACH_MCA_JOB_NAME,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_cs_reqbag_put_3(int i)" int mqm_inq_cs_reqbag_put_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_REQBAG_PUT_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_EXECUTE; mqExecute(mqm_dat[o].connection_handle ,MQCMD_INQUIRE_CHANNEL_STATUS ,mqm_dat[o].optbag_handle ,mqm_dat[o].reqbag_handle ,mqm_dat[o].rspbag_handle ,MQHO_NONE ,mqm_dat[o].asapx_q_reply_handle ,&mqm_dat[o].channel.compcode ,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "MQLONG cs_attr_get_3(int i \ ,MQLONG bagid \ ,MQCHAR *channel_name \ ,MQLONG *channel_name_len \ ,MQLONG *channel_type \ ,MQCHAR *xmit_queue_name \ ,MQLONG *xmit_queue_name_len \ ,MQLONG *bytes_send \ ,MQLONG *bytes_rcvd \ ,MQLONG *msgs \ ,MQLONG *status \ ,MQLONG *stop_request \ ,MQCHAR *job_name \ ,MQLONG *job_name_len)" MQLONG cs_attr_get_3(int i ,MQLONG bagid ,MQCHAR *channel_name ,MQLONG *channel_name_len ,MQLONG *channel_type ,MQCHAR *xmit_queue_name ,MQLONG *xmit_queue_name_len ,MQLONG *bytes_send ,MQLONG *bytes_rcvd ,MQLONG *msgs ,MQLONG *status ,MQLONG *stop_request ,MQCHAR *job_name ,MQLONG *job_name_len) { int o = i - srv[MQM_SRV].ulo_base; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQBAG; mqInquireBag(mqm_dat[o].rspbag_handle,MQHA_BAG_HANDLE,bagid,&mqm_dat[o].attrbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQSTRING; mqInquireString(mqm_dat[o].attrbag_handle,MQCACH_CHANNEL_NAME,0,MAX_B_LEN_CHANNEL_NAME,channel_name,channel_name_len,NULL,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQINT; mqInquireInteger(mqm_dat[o].attrbag_handle,MQIACH_CHANNEL_TYPE,MQIND_NONE,channel_type,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQSTRING; mqInquireString(mqm_dat[o].attrbag_handle,MQCACH_XMIT_Q_NAME,0,MAX_B_LEN_QUEUE_NAME,xmit_queue_name,xmit_queue_name_len,NULL,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQINT; mqInquireInteger(mqm_dat[o].attrbag_handle,MQIACH_BYTES_SENT,MQIND_NONE,bytes_send,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQINT; mqInquireInteger(mqm_dat[o].attrbag_handle,MQIACH_BYTES_RCVD,MQIND_NONE,bytes_rcvd,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQINT; mqInquireInteger(mqm_dat[o].attrbag_handle,MQIACH_MSGS,MQIND_NONE,msgs,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQINT; mqInquireInteger(mqm_dat[o].attrbag_handle,MQIACH_CHANNEL_STATUS,MQIND_NONE,status,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQINT; mqInquireInteger(mqm_dat[o].attrbag_handle,MQIACH_STOP_REQUESTED,MQIND_NONE,stop_request,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_INQSTRING; mqInquireString(mqm_dat[o].attrbag_handle,MQCACH_MCA_JOB_NAME,0,MAX_B_LEN_JOB_NAME,job_name,job_name_len,NULL,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); if (mqm_dat[o].channel.compcode) return mqm_dat[o].channel.compcode; return mqm_dat[o].channel.compcode; } #pragma page "int _mqm_channel_filter(char *qmgr_name \ ,char *channel_name,int channel_name_len \ ,MQLONG channel_type \ ,int nsk,char *prefix_nsk \ ,int zos,char *prefix_zos \ ,int aix,char *prefix_aix \ ,int win,char *prefix_win)" int _mqm_channel_filter(char *qmgr_name ,char *channel_name,int channel_name_len ,MQLONG channel_type ,int nsk,char *prefix_nsk ,int zos,char *prefix_zos ,int aix,char *prefix_aix ,int win,char *prefix_win) { char _channel_name[MAX_B_LEN_CHANNEL_NAME+1],*s; strncpy(_channel_name,channel_name,channel_name_len); _channel_name[channel_name_len] = '\0'; if ((s = strstr(_channel_name,qmgr_name)) != NULL) { switch (channel_type) { case MQCHT_SENDER : if (!strncmp(s,prefix_nsk,MAX_B_LEN_CHANNEL_PREFIX)) return nsk; if (!strncmp(s,prefix_zos,MAX_B_LEN_CHANNEL_PREFIX)) return zos; if (!strncmp(s,prefix_aix,MAX_B_LEN_CHANNEL_PREFIX)) return aix; if (!strncmp(s,prefix_win,MAX_B_LEN_CHANNEL_PREFIX)) return win; break; default : break; } } return false; } #pragma page "int cs_attr_set_3(int i \ ,MQCHAR *channel_name \ ,MQLONG channel_name_len \ ,MQLONG channel_type \ ,MQCHAR *xmit_queue_name \ ,MQLONG xmit_queue_name_len \ ,MQLONG bytes_send \ ,MQLONG bytes_rcvd \ ,MQLONG msgs \ ,MQLONG status \ ,MQLONG stop_request \ ,MQCHAR *job_name \ ,MQLONG job_name_len \ ,int excluded)" int cs_attr_set_3(int i ,MQCHAR *channel_name ,MQLONG channel_name_len ,MQLONG channel_type ,MQCHAR *xmit_queue_name ,MQLONG xmit_queue_name_len ,MQLONG bytes_send ,MQLONG bytes_rcvd ,MQLONG msgs ,MQLONG status ,MQLONG stop_request ,MQCHAR *job_name ,MQLONG job_name_len ,int excluded) { int o = i - srv[MQM_SRV].ulo_base,ci_pkey_len,cs_pkey_len,qs_pkey_len,p_len;short process_name_len; mqm_qs_ctrl_t *qs_ctrl_ptr;mqm_ci_ctrl_t *ci_ctrl_ptr;mqm_cs_ctrl_t *cs_ctrl_ptr; char cs_type_s[MAX_B_LEN_CHANNEL_TYPE+1],ci_pkey[MAX_B_LEN_CI_PKEY+1],cs_pkey[MAX_B_LEN_CS_PKEY+1],qs_pkey[MAX_B_LEN_QS_PKEY+1],process_name[MAX_B_LEN_PROCESS_NAME+1],*p; mq_channel_type_s(channel_type,cs_type_s); if (!mqm_object_pkey_add(ci_pkey,MAX_B_LEN_CI_PKEY,&ci_pkey_len ,prc_domainid_object_root,(int)strlen(prc_domainid_object_root) ,prc_qmgr_name,(int)strlen(prc_qmgr_name) ,mq_obj_class[MQ_ENM_OBJ_CLASS_CHANNEL],(int)strlen(mq_obj_class[MQ_ENM_OBJ_CLASS_CHANNEL]) ,cs_type_s,(int)strlen(cs_type_s) ,channel_name,channel_name_len ,"",0)) gen_exit(-1,"cs_attr_set_3:mqm_object_pkey_add failed due to domainid name length error"); ci_pkey[ci_pkey_len] = '\0'; if (ci_ctrl_ptr = treesrc(&tr_mqm_ci_ctrl,&ci_pkey,0,EQU,FIRST)) ci_ctrl_ptr->age = 0; if (job_name_len) { p_len = job_name_len; p = job_name; } else { p_len = (int)strlen(prc_qname); p = prc_qname; } FILENAME_UNRESOLVE_(p,(short)p_len,process_name,MAX_B_LEN_PROCESS_NAME,&process_name_len,0); if (!mqm_object_pkey_add(cs_pkey,MAX_B_LEN_CS_PKEY,&cs_pkey_len ,prc_domainid_object_root,(int)strlen(prc_domainid_object_root) ,prc_qmgr_name,(int)strlen(prc_qmgr_name) ,mq_obj_class[MQ_ENM_OBJ_CLASS_CHANNEL],(int)strlen(mq_obj_class[MQ_ENM_OBJ_CLASS_CHANNEL]) ,cs_type_s,(int)strlen(cs_type_s) ,channel_name,channel_name_len ,process_name,(int)process_name_len)) gen_exit(-1,"cs_attr_set_3:mqm_object_pkey_add failed due to domainid name length error"); cs_pkey[cs_pkey_len] = '\0'; if (!(cs_ctrl_ptr = treesrc(&tr_mqm_cs_ctrl,&cs_pkey,0,EQU,FIRST))) { if (!(cs_ctrl_ptr = listget(&fl_mqm_cs_ctrl))) return false; strcpy(cs_ctrl_ptr->pkey,cs_pkey); cs_ctrl_ptr->pkey_len = cs_pkey_len; cs_ctrl_ptr->channel_type = channel_type; cs_ctrl_ptr->age = 0; cs_ctrl_ptr->registered = false; cs_ctrl_ptr->filter = _mqm_channel_filter(prc_qmgr_name ,channel_name,channel_name_len ,channel_type ,prc_channel_filter_nsk,prc_channel_prefix_nsk ,prc_channel_filter_zos,prc_channel_prefix_zos ,prc_channel_filter_aix,prc_channel_prefix_aix ,prc_channel_filter_win,prc_channel_prefix_win); cs_ctrl_ptr->cs_attr.bytes_send_prev = bytes_send; cs_ctrl_ptr->cs_attr.bytes_rcvd_prev = bytes_rcvd; cs_ctrl_ptr->cs_attr.msgs_prev = msgs; treeins(&tr_mqm_cs_ctrl,cs_ctrl_ptr); } cs_ctrl_ptr->age++; cs_ctrl_ptr->excluded = excluded; cs_ctrl_ptr->cs_attr.xmit_queue_depth = 0l; if (!mqm_object_pkey_add(qs_pkey,MAX_B_LEN_QS_PKEY,&qs_pkey_len ,prc_domainid_object_root,(int)strlen(prc_domainid_object_root) ,prc_qmgr_name,(int)strlen(prc_qmgr_name) ,mq_obj_class[MQ_ENM_OBJ_CLASS_QUEUE],(int)strlen(mq_obj_class[MQ_ENM_OBJ_CLASS_QUEUE]) ,"",0 ,xmit_queue_name,xmit_queue_name_len ,"",0)) gen_exit(-1,"cs_attr_set_3:mqm_object_pkey_add failed due to domainid name length error"); qs_pkey[qs_pkey_len] = '\0'; if (qs_ctrl_ptr = treesrc(&tr_mqm_qs_ctrl,&qs_pkey,0,EQU,FIRST)) cs_ctrl_ptr->cs_attr.xmit_queue_depth = qs_ctrl_ptr->qs_attr.depth; cs_ctrl_ptr->cs_attr.bytes_send_curr = bytes_send; if (cs_ctrl_ptr->cs_attr.bytes_send_curr < cs_ctrl_ptr->cs_attr.bytes_send_prev) cs_ctrl_ptr->cs_attr.bytes_send_prev = bytes_send; cs_ctrl_ptr->cs_attr.bytes_rcvd_curr = bytes_rcvd; if (cs_ctrl_ptr->cs_attr.bytes_rcvd_curr < cs_ctrl_ptr->cs_attr.bytes_rcvd_prev) cs_ctrl_ptr->cs_attr.bytes_rcvd_prev = bytes_rcvd; cs_ctrl_ptr->cs_attr.status = status; cs_ctrl_ptr->cs_attr.msgs_curr = msgs; if (cs_ctrl_ptr->cs_attr.msgs_curr < cs_ctrl_ptr->cs_attr.msgs_prev) cs_ctrl_ptr->cs_attr.msgs_prev = msgs; cs_ctrl_ptr->cs_attr.stop_request = stop_request; return true; } #pragma page "MQLONG _mqm_inq_cs_rspbag_get_3(int i,MQLONG bags)" MQLONG _mqm_inq_cs_rspbag_get_3(int i,MQLONG bags) { int o = i - srv[MQM_SRV].ulo_base; MQLONG j,xmit_queue_name_len,channel_name_len,job_name_len,channel_type,bytes_send,bytes_rcvd,msgs,status,stop_request,compcode; MQCHAR xmit_queue_name[MAX_B_LEN_QUEUE_NAME+1],channel_name[MAX_B_LEN_CHANNEL_NAME+1],job_name[MAX_B_LEN_JOB_NAME+1]; compcode = 0l; j = 0l; while ((j != bags) && (!compcode)) { compcode = cs_attr_get_3(i ,j ,channel_name,&channel_name_len,&channel_type ,xmit_queue_name,&xmit_queue_name_len ,&bytes_send ,&bytes_rcvd ,&msgs ,&status ,&stop_request ,job_name,&job_name_len); if (!compcode) { channel_name_len = strslen(channel_name,channel_name_len); xmit_queue_name_len = strslen(xmit_queue_name,xmit_queue_name_len); job_name_len = strslen(job_name,job_name_len); cs_attr_set_3(i ,channel_name,channel_name_len,channel_type ,xmit_queue_name,xmit_queue_name_len ,bytes_send ,bytes_rcvd ,msgs ,status ,stop_request ,job_name,job_name_len ,mqm_exclude_channel_type(channel_type) || mqm_exclude_channel_name(channel_name)); } j++; } return compcode; } #pragma page "int mqm_inq_cs_rspbag_get_3(int i)" int mqm_inq_cs_rspbag_get_3(int i) { int o = i - srv[MQM_SRV].ulo_base;MQLONG bags; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_RSPBAG_GET_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_CNTITEMS; mqCountItems(mqm_dat[o].rspbag_handle,MQHA_BAG_HANDLE,&bags,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) return ZEMS_VAL_ERR_TYP_MQ; err.numl = _mqm_inq_cs_rspbag_get_3(i,bags); return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_cs_optbag_del_3(int i)" int mqm_inq_cs_optbag_del_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_OPTBAG_DEL_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_DELETEBAG; mqDeleteBag(&mqm_dat[o].optbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) gen_exit(-1,"mqm_inq_cs_optbag_del_3:mqDeleteBag - ERROR: cc = %i reason = %i\n",mqm_dat[o].channel.compcode,mqm_dat[o].channel.reason); mqm_dat[o].optbag_handle = MQHB_UNUSABLE_HBAG; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_cs_reqbag_del_3(int i)" int mqm_inq_cs_reqbag_del_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_REQBAG_DEL_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_DELETEBAG; mqDeleteBag(&mqm_dat[o].reqbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) gen_exit(-1,"mqm_inq_cs_reqbag_del_3:mqDeleteBag - ERROR: cc = %i reason = %i\n",mqm_dat[o].channel.compcode,mqm_dat[o].channel.reason); mqm_dat[o].reqbag_handle = MQHB_UNUSABLE_HBAG; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_inq_cs_rspbag_del_3(int i)" int mqm_inq_cs_rspbag_del_3(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_INQ_CS_RSPBAG_DEL_3,i); gen_stc_psh(ulo[i].err_stc,GEN_WHT_NEXT,(int)MQCC_OK); mqm_dat[o].channel.ops_type = MQA_ENM_OPS_TYPE_DELETEBAG; mqDeleteBag(&mqm_dat[o].rspbag_handle,&mqm_dat[o].channel.compcode,&mqm_dat[o].channel.reason); err.numl = mqm_dat[o].channel.compcode; if (err.numl) gen_exit(-1,"mqm_inq_cs_rspbag_del_3:mqDeleteBag - ERROR: cc = %i reason = %i\n",mqm_dat[o].channel.compcode,mqm_dat[o].channel.reason); mqm_dat[o].rspbag_handle = MQHB_UNUSABLE_HBAG; return ZEMS_VAL_ERR_TYP_MQ; } #pragma page "int mqm_asapx_3(int i)" int mqm_asapx_3(int i) { int o = i - srv[MQM_SRV].ulo_base;long long ci_util,cs_util; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_ASAPX_3,i); mqm_dat[o].channel.object = 0; mqm_dat[o].channel.object_excluded = 0; mqm_dat[o].channel.object_ok = 0; ci_ctrl_scan(i,&mqm_dat[o].channel.object,&mqm_dat[o].channel.object_excluded,&mqm_dat[o].channel.object_ok,false); cs_ctrl_scan(i,&mqm_dat[o].channel.object,&mqm_dat[o].channel.object_excluded,&mqm_dat[o].channel.object_ok,false); ci_util = (MQM_CI_CTRL_MAX-flistcnt(&fl_mqm_ci_ctrl)) * 100ll/MQM_CI_CTRL_MAX; cs_util = (MQM_CS_CTRL_MAX-flistcnt(&fl_mqm_cs_ctrl)) * 100ll/MQM_CS_CTRL_MAX; DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_AGENT_OPS_TYPE,mqa_ops_type_l(mqm_dat[o].channel.ops_type)); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_AGENT_REASON,mqm_dat[o].channel.reason); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_AGENT_COMPCODE,mq_cc_l(mqm_dat[o].channel.compcode)); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_OBJECT_UTIL,(ci_util > cs_util) ? ci_util : cs_util); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_OBJECT,(long long)mqm_dat[o].channel.object); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_OBJECT_BAD,(long long)mqm_dat[o].channel.object-mqm_dat[o].channel.object_ok); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_OBJECT_EXCLUDED,(long long)mqm_dat[o].channel.object_excluded); DOMAIN_SET_STATE(&domain_channel,(short)ASAPX_ENM_STATUS_UP); DOMAIN_SET(&domain_channel); mqm_dat[o].channel.raise_alert = false; gen_stc_psh(act_stc,MQM_WHT_TRIGGER_5,i); return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_trigger_4(int i)" int mqm_trigger_4(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_clr(ulo[i].pth_stc); gen_stc_clr(ulo[i].wht_stc); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_ASAPX_4,i); return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_asapx_4(int i)" int mqm_asapx_4(int i) { int o = i - srv[MQM_SRV].ulo_base;long long ci_util,cs_util; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_ASAPX_4,i); ci_util = (MQM_CI_CTRL_MAX-flistcnt(&fl_mqm_ci_ctrl)) * 100ll/MQM_CI_CTRL_MAX; cs_util = (MQM_CS_CTRL_MAX-flistcnt(&fl_mqm_cs_ctrl)) * 100ll/MQM_CS_CTRL_MAX; DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_AGENT_OPS_TYPE,mqa_ops_type_l(mqm_dat[o].channel.ops_type)); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_AGENT_REASON,mqm_dat[o].channel.reason); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_AGENT_COMPCODE,mq_cc_l(mqm_dat[o].channel.compcode)); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_OBJECT_UTIL,(ci_util > cs_util) ? ci_util : cs_util); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_OBJECT,0ll); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_OBJECT_BAD,0ll); DOMAIN_SET_DATA_ITEM(&domain_channel,MQA_ENM_DIT_OBJECT_EXCLUDED,0ll); DOMAIN_SET_STATE(&domain_channel,(mqm_dat[o].channel.raise_alert) ? (short)ASAPX_ENM_STATUS_CRITICAL : (short)ASAPX_ENM_STATUS_UP); DOMAIN_SET(&domain_channel); mqm_dat[o].channel.raise_alert = true; gen_stc_psh(act_stc,MQM_WHT_TRIGGER_5,i); return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_trigger_5(int i)" int mqm_trigger_5(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_clr(ulo[i].pth_stc); gen_stc_clr(ulo[i].wht_stc); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_AWAKE_5,i); gen_stc_psh(ulo[i].wht_stc,MQM_WHT_WAIT_5,i); return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_wait_5(int i)" int mqm_wait_5(int i) { int o = i - srv[MQM_SRV].ulo_base; gen_stc_psh(ulo[i].pth_stc,MQM_WHT_WAIT_5,i); ulo[i].nw_val = _mqm_sample_delta(&jt,prc_sample_interval); return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_awake_5(int i)" int mqm_awake_5(int i) { gen_stc_psh(ulo[i].pth_stc,MQM_WHT_AWAKE_5,i); gen_stc_psh(act_stc,MQM_WHT_TRIGGER_1,i); return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "int mqm_reset(int i)" int mqm_reset(int i) { int o = i - srv[MQM_SRV].ulo_base;MQLONG compcode,reason; if (mqm_dat[o].optbag_handle != MQHB_UNUSABLE_HBAG) { mqDeleteBag(&mqm_dat[o].optbag_handle,&compcode,&reason); if (compcode) gen_exit(-1,"mqm_reset:mqDeleteBag - ERROR: cc = %i reason = %i\n",compcode,reason); mqm_dat[o].optbag_handle = MQHB_UNUSABLE_HBAG; } if (mqm_dat[o].rspbag_handle != MQHB_UNUSABLE_HBAG) { mqDeleteBag(&mqm_dat[o].rspbag_handle,&compcode,&reason); if (compcode) gen_exit(-1,"mqm_reset:mqDeleteBag - ERROR: cc = %i reason = %i\n",compcode,reason); mqm_dat[o].rspbag_handle = MQHB_UNUSABLE_HBAG; } if (mqm_dat[o].reqbag_handle != MQHB_UNUSABLE_HBAG) { mqDeleteBag(&mqm_dat[o].reqbag_handle,&compcode,&reason); if (compcode) gen_exit(-1,"mqm_reset:mqDeleteBag - ERROR: cc = %i reason = %i\n",compcode,reason); mqm_dat[o].reqbag_handle = MQHB_UNUSABLE_HBAG; } if (mqm_dat[o].asapx_q_reply_handle != -1l) { MQCLOSE(mqm_dat[o].connection_handle,&mqm_dat[o].asapx_q_reply_handle,MQCO_DELETE_PURGE,&compcode,&reason); if (compcode) if (reason != MQRC_CONNECTION_BROKEN) gen_exit(-1,"mqm_reset:MQCLOSE - ERROR: cc = %i reason = %i\n",compcode,reason); mqm_dat[o].asapx_q_reply_handle = -1l; } if (mqm_dat[o].connection_handle != -1l) { MQDISC(&mqm_dat[o].connection_handle,&compcode,&reason); if (compcode) if (reason != MQRC_CONNECTION_BROKEN) gen_exit(-1,"mqm_reset:MQDISC - ERROR: cc = %i reason = %i\n",compcode,reason); mqm_dat[o].connection_handle = -1l; } return ZEMS_VAL_ERR_TYP_NULL; } #pragma page "void mqm_sym_str_wht(char *str,int wht)" void mqm_sym_str_wht(char *str,int wht) { switch (wht) { case MQM_WHT_TRIGGER_1 : strcat(str,MQM_TXT_TRIGGER_1); break; case MQM_WHT_MQCONN_1 : strcat(str,MQM_TXT_MQCONN_1); break; case MQM_WHT_MQOPEN_1 : strcat(str,MQM_TXT_MQOPEN_1); break; case MQM_WHT_INQ_QS_OPTBAG_ADD_1 : strcat(str,MQM_TXT_INQ_QS_OPTBAG_ADD_1); break; case MQM_WHT_INQ_QS_REQBAG_ADD_1 : strcat(str,MQM_TXT_INQ_QS_REQBAG_ADD_1); break; case MQM_WHT_INQ_QS_RSPBAG_ADD_1 : strcat(str,MQM_TXT_INQ_QS_RSPBAG_ADD_1); break; case MQM_WHT_INQ_QS_OPTBAG_SET_1 : strcat(str,MQM_TXT_INQ_QS_OPTBAG_SET_1); break; case MQM_WHT_INQ_QS_REQBAG_SET_1 : strcat(str,MQM_TXT_INQ_QS_REQBAG_SET_1); break; case MQM_WHT_INQ_QS_REQBAG_PUT_1 : strcat(str,MQM_TXT_INQ_QS_REQBAG_PUT_1); break; case MQM_WHT_INQ_QS_RSPBAG_GET_1 : strcat(str,MQM_TXT_INQ_QS_RSPBAG_GET_1); break; case MQM_WHT_INQ_QS_OPTBAG_DEL_1 : strcat(str,MQM_TXT_INQ_QS_OPTBAG_DEL_1); break; case MQM_WHT_INQ_QS_REQBAG_DEL_1 : strcat(str,MQM_TXT_INQ_QS_REQBAG_DEL_1); break; case MQM_WHT_INQ_QS_RSPBAG_DEL_1 : strcat(str,MQM_TXT_INQ_QS_RSPBAG_DEL_1); break; case MQM_WHT_ASAPX_1 : strcat(str,MQM_TXT_ASAPX_1); break; case MQM_WHT_TRIGGER_2 : strcat(str,MQM_TXT_TRIGGER_2); break; case MQM_WHT_ASAPX_2 : strcat(str,MQM_TXT_ASAPX_2); break; case MQM_WHT_TRIGGER_3 : strcat(str,MQM_TXT_TRIGGER_3); break; case MQM_WHT_MQCONN_3 : strcat(str,MQM_TXT_MQCONN_3); break; case MQM_WHT_MQOPEN_3 : strcat(str,MQM_TXT_MQOPEN_3); break; case MQM_WHT_INQ_CI_OPTBAG_ADD_3 : strcat(str,MQM_TXT_INQ_CI_OPTBAG_ADD_3); break; case MQM_WHT_INQ_CI_REQBAG_ADD_3 : strcat(str,MQM_TXT_INQ_CI_REQBAG_ADD_3); break; case MQM_WHT_INQ_CI_RSPBAG_ADD_3 : strcat(str,MQM_TXT_INQ_CI_RSPBAG_ADD_3); break; case MQM_WHT_INQ_CI_OPTBAG_SET_3 : strcat(str,MQM_TXT_INQ_CI_OPTBAG_SET_3); break; case MQM_WHT_INQ_CI_REQBAG_SET_3 : strcat(str,MQM_TXT_INQ_CI_REQBAG_SET_3); break; case MQM_WHT_INQ_CI_REQBAG_PUT_3 : strcat(str,MQM_TXT_INQ_CI_REQBAG_PUT_3); break; case MQM_WHT_INQ_CI_RSPBAG_GET_3 : strcat(str,MQM_TXT_INQ_CI_RSPBAG_GET_3); break; case MQM_WHT_INQ_CI_OPTBAG_DEL_3 : strcat(str,MQM_TXT_INQ_CI_OPTBAG_DEL_3); break; case MQM_WHT_INQ_CI_REQBAG_DEL_3 : strcat(str,MQM_TXT_INQ_CI_REQBAG_DEL_3); break; case MQM_WHT_INQ_CI_RSPBAG_DEL_3 : strcat(str,MQM_TXT_INQ_CI_RSPBAG_DEL_3); break; case MQM_WHT_INQ_CS_OPTBAG_ADD_3 : strcat(str,MQM_TXT_INQ_CS_OPTBAG_ADD_3); break; case MQM_WHT_INQ_CS_REQBAG_ADD_3 : strcat(str,MQM_TXT_INQ_CS_REQBAG_ADD_3); break; case MQM_WHT_INQ_CS_RSPBAG_ADD_3 : strcat(str,MQM_TXT_INQ_CS_RSPBAG_ADD_3); break; case MQM_WHT_INQ_CS_OPTBAG_SET_3 : strcat(str,MQM_TXT_INQ_CS_OPTBAG_SET_3); break; case MQM_WHT_INQ_CS_REQBAG_SET_3 : strcat(str,MQM_TXT_INQ_CS_REQBAG_SET_3); break; case MQM_WHT_INQ_CS_REQBAG_PUT_3 : strcat(str,MQM_TXT_INQ_CS_REQBAG_PUT_3); break; case MQM_WHT_INQ_CS_RSPBAG_GET_3 : strcat(str,MQM_TXT_INQ_CS_RSPBAG_GET_3); break; case MQM_WHT_INQ_CS_OPTBAG_DEL_3 : strcat(str,MQM_TXT_INQ_CS_OPTBAG_DEL_3); break; case MQM_WHT_INQ_CS_REQBAG_DEL_3 : strcat(str,MQM_TXT_INQ_CS_REQBAG_DEL_3); break; case MQM_WHT_INQ_CS_RSPBAG_DEL_3 : strcat(str,MQM_TXT_INQ_CS_RSPBAG_DEL_3); break; case MQM_WHT_ASAPX_3 : strcat(str,MQM_TXT_ASAPX_3); break; case MQM_WHT_TRIGGER_4 : strcat(str,MQM_TXT_TRIGGER_4); break; case MQM_WHT_ASAPX_4 : strcat(str,MQM_TXT_ASAPX_4); break; case MQM_WHT_TRIGGER_5 : strcat(str,MQM_TXT_TRIGGER_5); break; case MQM_WHT_WAIT_5 : strcat(str,MQM_TXT_WAIT_5); break; case MQM_WHT_AWAKE_5 : strcat(str,MQM_TXT_AWAKE_5); break; default : gen_exit(-1,""); break; } } #pragma page "int mqm(int i,int wht)" int mqm(int i,int wht) { int err_typ; switch (wht) { case GEN_WHT_RESET : err_typ = mqm_reset(i); break; case MQM_WHT_TRIGGER_1 : err_typ = mqm_trigger_1(i); break; case MQM_WHT_MQCONN_1 : err_typ = mqm_mqconn_1(i); break; case MQM_WHT_MQOPEN_1 : err_typ = mqm_mqopen_1(i); break; case MQM_WHT_INQ_QS_OPTBAG_ADD_1 : err_typ = mqm_inq_qs_optbag_add_1(i); break; case MQM_WHT_INQ_QS_REQBAG_ADD_1 : err_typ = mqm_inq_qs_reqbag_add_1(i); break; case MQM_WHT_INQ_QS_RSPBAG_ADD_1 : err_typ = mqm_inq_qs_rspbag_add_1(i); break; case MQM_WHT_INQ_QS_OPTBAG_SET_1 : err_typ = mqm_inq_qs_optbag_set_1(i); break; case MQM_WHT_INQ_QS_REQBAG_SET_1 : err_typ = mqm_inq_qs_reqbag_set_1(i); break; case MQM_WHT_INQ_QS_REQBAG_PUT_1 : err_typ = mqm_inq_qs_reqbag_put_1(i); break; case MQM_WHT_INQ_QS_RSPBAG_GET_1 : err_typ = mqm_inq_qs_rspbag_get_1(i); break; case MQM_WHT_INQ_QS_OPTBAG_DEL_1 : err_typ = mqm_inq_qs_optbag_del_1(i); break; case MQM_WHT_INQ_QS_REQBAG_DEL_1 : err_typ = mqm_inq_qs_reqbag_del_1(i); break; case MQM_WHT_INQ_QS_RSPBAG_DEL_1 : err_typ = mqm_inq_qs_rspbag_del_1(i); break; case MQM_WHT_ASAPX_1 : err_typ = mqm_asapx_1(i); break; case MQM_WHT_TRIGGER_2 : err_typ = mqm_trigger_2(i); break; case MQM_WHT_ASAPX_2 : err_typ = mqm_asapx_2(i); break; case MQM_WHT_TRIGGER_3 : err_typ = mqm_trigger_3(i); break; case MQM_WHT_MQCONN_3 : err_typ = mqm_mqconn_3(i); break; case MQM_WHT_MQOPEN_3 : err_typ = mqm_mqopen_3(i); break; case MQM_WHT_INQ_CI_OPTBAG_ADD_3 : err_typ = mqm_inq_ci_optbag_add_3(i); break; case MQM_WHT_INQ_CI_REQBAG_ADD_3 : err_typ = mqm_inq_ci_reqbag_add_3(i); break; case MQM_WHT_INQ_CI_RSPBAG_ADD_3 : err_typ = mqm_inq_ci_rspbag_add_3(i); break; case MQM_WHT_INQ_CI_OPTBAG_SET_3 : err_typ = mqm_inq_ci_optbag_set_3(i); break; case MQM_WHT_INQ_CI_REQBAG_SET_3 : err_typ = mqm_inq_ci_reqbag_set_3(i); break; case MQM_WHT_INQ_CI_REQBAG_PUT_3 : err_typ = mqm_inq_ci_reqbag_put_3(i); break; case MQM_WHT_INQ_CI_RSPBAG_GET_3 : err_typ = mqm_inq_ci_rspbag_get_3(i); break; case MQM_WHT_INQ_CI_OPTBAG_DEL_3 : err_typ = mqm_inq_ci_optbag_del_3(i); break; case MQM_WHT_INQ_CI_REQBAG_DEL_3 : err_typ = mqm_inq_ci_reqbag_del_3(i); break; case MQM_WHT_INQ_CI_RSPBAG_DEL_3 : err_typ = mqm_inq_ci_rspbag_del_3(i); break; case MQM_WHT_INQ_CS_OPTBAG_ADD_3 : err_typ = mqm_inq_cs_optbag_add_3(i); break; case MQM_WHT_INQ_CS_REQBAG_ADD_3 : err_typ = mqm_inq_cs_reqbag_add_3(i); break; case MQM_WHT_INQ_CS_RSPBAG_ADD_3 : err_typ = mqm_inq_cs_rspbag_add_3(i); break; case MQM_WHT_INQ_CS_OPTBAG_SET_3 : err_typ = mqm_inq_cs_optbag_set_3(i); break; case MQM_WHT_INQ_CS_REQBAG_SET_3 : err_typ = mqm_inq_cs_reqbag_set_3(i); break; case MQM_WHT_INQ_CS_REQBAG_PUT_3 : err_typ = mqm_inq_cs_reqbag_put_3(i); break; case MQM_WHT_INQ_CS_RSPBAG_GET_3 : err_typ = mqm_inq_cs_rspbag_get_3(i); break; case MQM_WHT_INQ_CS_OPTBAG_DEL_3 : err_typ = mqm_inq_cs_optbag_del_3(i); break; case MQM_WHT_INQ_CS_REQBAG_DEL_3 : err_typ = mqm_inq_cs_reqbag_del_3(i); break; case MQM_WHT_INQ_CS_RSPBAG_DEL_3 : err_typ = mqm_inq_cs_rspbag_del_3(i); break; case MQM_WHT_ASAPX_3 : err_typ = mqm_asapx_3(i); break; case MQM_WHT_TRIGGER_4 : err_typ = mqm_trigger_4(i); break; case MQM_WHT_ASAPX_4 : err_typ = mqm_asapx_4(i); break; case MQM_WHT_TRIGGER_5 : err_typ = mqm_trigger_5(i); break; case MQM_WHT_WAIT_5 : err_typ = mqm_wait_5(i); break; case MQM_WHT_AWAKE_5 : err_typ = mqm_awake_5(i); break; default : gen_exit(-1,""); break; } return err_typ; } #pragma section ownprocs void own_command_ini(void) { add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_ASAPID,MOD_VAL_ASAPID); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_SAMPLE_INTERVAL,MOD_VAL_SAMPLE_INTERVAL); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_DOMAINID_OBJECT_ROOT,MOD_VAL_DOMAINID_OBJECT_ROOT); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_DOMAINID_AGENT_ROOT,MOD_VAL_DOMAINID_AGENT_ROOT); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_QMGR_NAME,MOD_VAL_QMGR_NAME); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_Q_SYSTEM,MOD_VAL_EXCLUDE_Q_SYSTEM); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_Q_MODEL,MOD_VAL_EXCLUDE_Q_MODEL); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_Q_TEMP,MOD_VAL_EXCLUDE_Q_TEMP); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_ASAPX_Q_REPLY,MOD_VAL_ASAPX_Q_REPLY); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_ASAPX_Q_MODEL,MOD_VAL_ASAPX_Q_MODEL); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHT_SENDER,MOD_VAL_EXCLUDE_CHT_SENDER); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHT_SERVER,MOD_VAL_EXCLUDE_CHT_SERVER); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHT_RECEIVER,MOD_VAL_EXCLUDE_CHT_RECEIVER); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHT_REQUESTER,MOD_VAL_EXCLUDE_CHT_REQUESTER); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHT_SVRCONN,MOD_VAL_EXCLUDE_CHT_SVRCONN); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHT_CLNTCONN,MOD_VAL_EXCLUDE_CHT_CLNTCONN); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHT_CLUSRCVR,MOD_VAL_EXCLUDE_CHT_CLUSRCVR); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHT_CLUSSDR,MOD_VAL_EXCLUDE_CHT_CLUSSDR); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHL_SYSTEM,MOD_VAL_EXCLUDE_CHL_SYSTEM); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_EXCLUDE_CHL_MODEL,MOD_VAL_EXCLUDE_CHL_MODEL); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_CHANNEL_FILTER_NSK,MOD_VAL_CHANNEL_FILTER_NSK); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_CHANNEL_FILTER_ZOS,MOD_VAL_CHANNEL_FILTER_ZOS); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_CHANNEL_FILTER_AIX,MOD_VAL_CHANNEL_FILTER_AIX); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_CHANNEL_FILTER_WIN,MOD_VAL_CHANNEL_FILTER_WIN); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_CHANNEL_PREFIX_NSK,MOD_VAL_CHANNEL_PREFIX_NSK); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_CHANNEL_PREFIX_ZOS,MOD_VAL_CHANNEL_PREFIX_ZOS); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_CHANNEL_PREFIX_AIX,MOD_VAL_CHANNEL_PREFIX_AIX); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_CHANNEL_PREFIX_WIN,MOD_VAL_CHANNEL_PREFIX_WIN); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_ASAPX_Q_REPLY_SEQNO_MAX,MOD_VAL_ASAPX_Q_REPLY_SEQNO_MAX); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_CHANNEL_ALERT,MOD_VAL_CHANNEL_ALERT); add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_ROLLOVER_HOUR,MOD_VAL_ROLLOVER_HOUR); /* 06/11/2005 DDB: added */ add_cmd(CMD_SCT_TXT_MOD,MOD_TXT_ROLLOVER_MINUTES,MOD_VAL_ROLLOVER_MINUTES); /* 06/11/2005 DDB: added */ } int own_cmd_reset(char **p) { int e = CMD_ERR_SUCCESSFULL; switch (cmd[ent_val]) { default : e = CMD_ERR_ILLEGALENTITY; *p = cmd_tree[ent_val].name; break; } return e; } int own_cmd_set_prc(char *val,char **p) { int e = CMD_ERR_SUCCESSFULL; switch (cmd[mod_val]) { case MOD_VAL_ASAPID : e = cmd_scan_str(val,p,prc_asapid,MAX_B_LEN_ASAPID,1); break; case MOD_VAL_SAMPLE_INTERVAL : e = cmd_scan_long(val,p,&prc_sample_interval,3000l,30000l); break; case MOD_VAL_DOMAINID_OBJECT_ROOT : e = cmd_scan_str(val,p,prc_domainid_object_root,MAX_B_LEN_DOMAINID_OBJECT_ROOT,1); break; case MOD_VAL_DOMAINID_AGENT_ROOT : e = cmd_scan_str(val,p,prc_domainid_agent_root,MAX_B_LEN_DOMAINID_AGENT_ROOT,1); break; case MOD_VAL_QMGR_NAME : e = cmd_scan_str(val,p,prc_qmgr_name,MAX_B_LEN_QMGR_NAME,1); break; case MOD_VAL_EXCLUDE_Q_SYSTEM : e = cmd_scan_cmd_int(val,p,&prc_exclude_q_system,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_Q_MODEL : e = cmd_scan_cmd_int(val,p,&prc_exclude_q_model,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_Q_TEMP : e = cmd_scan_cmd_int(val,p,&prc_exclude_q_temp,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_ASAPX_Q_REPLY : e = cmd_scan_str(val,p,prc_asapx_q_reply,MAX_B_LEN_QUEUE_NAME-2,1); break; /* leave room for seperator and seqno */ case MOD_VAL_ASAPX_Q_MODEL : e = cmd_scan_str(val,p,prc_asapx_q_model,MAX_B_LEN_QUEUE_NAME,1); break; case MOD_VAL_EXCLUDE_CHT_SENDER : e = cmd_scan_cmd_int(val,p,&prc_exclude_cht_sender,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_CHT_SERVER : e = cmd_scan_cmd_int(val,p,&prc_exclude_cht_server,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_CHT_RECEIVER : e = cmd_scan_cmd_int(val,p,&prc_exclude_cht_receiver,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_CHT_REQUESTER : e = cmd_scan_cmd_int(val,p,&prc_exclude_cht_requester,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_CHT_SVRCONN : e = cmd_scan_cmd_int(val,p,&prc_exclude_cht_svrconn,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_CHT_CLNTCONN : e = cmd_scan_cmd_int(val,p,&prc_exclude_cht_clntconn,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_CHT_CLUSRCVR : e = cmd_scan_cmd_int(val,p,&prc_exclude_cht_clusrcvr,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_CHT_CLUSSDR : e = cmd_scan_cmd_int(val,p,&prc_exclude_cht_clussdr,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_CHL_SYSTEM : e = cmd_scan_cmd_int(val,p,&prc_exclude_chl_system,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_EXCLUDE_CHL_MODEL : e = cmd_scan_cmd_int(val,p,&prc_exclude_chl_model,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_CHANNEL_FILTER_NSK : e = cmd_scan_cmd_int(val,p,&prc_channel_filter_nsk,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_CHANNEL_FILTER_ZOS : e = cmd_scan_cmd_int(val,p,&prc_channel_filter_zos,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_CHANNEL_FILTER_AIX : e = cmd_scan_cmd_int(val,p,&prc_channel_filter_aix,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_CHANNEL_FILTER_WIN : e = cmd_scan_cmd_int(val,p,&prc_channel_filter_win,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_CHANNEL_PREFIX_NSK : e = cmd_scan_str(val,p,prc_channel_prefix_nsk,MAX_B_LEN_CHANNEL_PREFIX,1); break; case MOD_VAL_CHANNEL_PREFIX_ZOS : e = cmd_scan_str(val,p,prc_channel_prefix_zos,MAX_B_LEN_CHANNEL_PREFIX,1); break; case MOD_VAL_CHANNEL_PREFIX_AIX : e = cmd_scan_str(val,p,prc_channel_prefix_aix,MAX_B_LEN_CHANNEL_PREFIX,1); break; case MOD_VAL_CHANNEL_PREFIX_WIN : e = cmd_scan_str(val,p,prc_channel_prefix_win,MAX_B_LEN_CHANNEL_PREFIX,1); break; case MOD_VAL_ASAPX_Q_REPLY_SEQNO_MAX : e = cmd_scan_long(val,p,&prc_asapx_q_reply_seqno_max,1l,10l); break; case MOD_VAL_CHANNEL_ALERT : e = cmd_scan_cmd_int(val,p,&prc_channel_alert,1,CMD_SCT_TXT_BOOL); break; case MOD_VAL_ROLLOVER_HOUR : e = cmd_scan_int(val,p,&prc_rollover_hour,0,23); break; /* 06/11/2005 DDB: added */ case MOD_VAL_ROLLOVER_MINUTES : e = cmd_scan_int(val,p,&prc_rollover_minutes,0,59); break; /* 06/11/2005 DDB: added */ default : e = CMD_ERR_ILLEGALMODIFIER; *p = cmd_tree[mod_val].name; break; } return e; } int own_cmd_set(char **p) { int e = CMD_ERR_SUCCESSFULL; switch (cmd[ent_val]) { default : e = CMD_ERR_ILLEGALENTITY; *p = cmd_tree[ent_val].name; break; } return e; } int own_cmd_add(char **p) { int e = CMD_ERR_SUCCESSFULL; switch (cmd[ent_val]) { default : e = CMD_ERR_ILLEGALENTITY; *p = cmd_tree[ent_val].name; break; } return e; } int own_cmd_delete(char **p) { int e = CMD_ERR_SUCCESSFULL; switch (cmd[ent_val]) { default : e = CMD_ERR_ILLEGALENTITY; *p = cmd_tree[ent_val].name; break; } return e; } int own_cmd_command(char **p) { int e = CMD_ERR_SUCCESSFULL; switch (cmd[cmd_val]) { default : e = CMD_ERR_ILLEGALCOMMAND; *p = cmd_tree[cmd_val].name; break; } return e; } void own_error(int i) { } int own_err_typ_handling(int i,int *err_typ,int *err_idx,err_num *e,char *err_sym) { switch(ulo[i].srv) { case MQM_SRV : return ZEMS_VAL_BOOL_FALSE; break; default : return ZEMS_VAL_BOOL_TRUE; break; } } void own_sym_str_wht(char *str,int wht,int srv) { switch (srv) { case MQM_SRV : mqm_sym_str_wht(str,wht); break; default : gen_exit(-1,""); break; } } int own_process_wht(int i,int wht) { int err_typ = ZEMS_VAL_ERR_TYP_NULL; switch (ulo[i].srv) { case MQM_SRV : err_typ = mqm(i,wht); break; default : gen_exit(-1,""); break; } return err_typ; } void own_cnf_pre(void) { mqm_srv_add(); } void own_cnf_post(void) { mqm_ulo_add(); } void own_srv_trigger(void) { gen_stc_psh(act_stc,MQM_WHT_TRIGGER_1,srv[MQM_SRV].ulo_base); } void own_ini(void) { int domainid_queue_len,domainid_channel_len;char domainid_queue[MAX_B_LEN_DOMAINID+1],domainid_channel[MAX_B_LEN_DOMAINID+1],process_name[MAX_B_LEN_PROCESS_NAME+1];short process_name_len; FILENAME_UNRESOLVE_(obj[0].qname,(short)strlen(obj[0].qname),process_name,MAX_B_LEN_PROCESS_NAME,&process_name_len,0); process_name[process_name_len] = '\0'; #ifdef MQ53 ASAPENV_INI(&asapenv,prc_asapid,(short)strlen(prc_asapid),777,,,,500l); #else ASAPENV_INI(&asapenv,prc_asapid,(short)strlen(prc_asapid),,,,,500l); #endif if (!mqm_object_pkey_add(domainid_queue,MAX_B_LEN_DOMAINID,&domainid_queue_len ,prc_domainid_agent_root,(int)strlen(prc_domainid_agent_root) ,prc_qmgr_name,(int)strlen(prc_qmgr_name) ,mq_obj_class[MQ_ENM_OBJ_CLASS_PROCESS],(int)strlen(mq_obj_class[MQ_ENM_OBJ_CLASS_PROCESS]) ,"",0 ,mq_obj_class[MQ_ENM_OBJ_CLASS_QUEUE],(int)strlen(mq_obj_class[MQ_ENM_OBJ_CLASS_QUEUE]) ,process_name,(int)process_name_len)) gen_exit(-1,"own_ini:mqm_object_pkey_add failed due to domainid name length error"); domainid_queue[domainid_queue_len] = '\0'; if (!mqm_object_pkey_add(domainid_channel,MAX_B_LEN_DOMAINID,&domainid_channel_len ,prc_domainid_agent_root,(int)strlen(prc_domainid_agent_root) ,prc_qmgr_name,(int)strlen(prc_qmgr_name) ,mq_obj_class[MQ_ENM_OBJ_CLASS_PROCESS],(int)strlen(mq_obj_class[MQ_ENM_OBJ_CLASS_PROCESS]) ,"",0 ,mq_obj_class[MQ_ENM_OBJ_CLASS_CHANNEL],(int)strlen(mq_obj_class[MQ_ENM_OBJ_CLASS_CHANNEL]) ,process_name,(int)process_name_len)) gen_exit(-1,"own_ini:mqm_object_pkey_add failed due to domainid name length error"); domainid_channel[domainid_channel_len] = '\0'; DOMAIN_INI(&domain_queue,domainid_queue,(short)strlen(domainid_queue),&asapenv,7 ,MQA_ENM_DIT_AGENT_OPS_TYPE,ASAPX_ENM_MATH_REPLACE_2 ,MQA_ENM_DIT_AGENT_REASON,ASAPX_ENM_MATH_REPLACE ,MQA_ENM_DIT_AGENT_COMPCODE,ASAPX_ENM_MATH_REPLACE_2 ,MQA_ENM_DIT_OBJECT_UTIL,ASAPX_ENM_MATH_REPLACE ,MQA_ENM_DIT_OBJECT,ASAPX_ENM_MATH_REPLACE ,MQA_ENM_DIT_OBJECT_BAD,ASAPX_ENM_MATH_REPLACE ,MQA_ENM_DIT_OBJECT_EXCLUDED,ASAPX_ENM_MATH_REPLACE); DOMAIN_INI(&domain_channel,domainid_channel,(short)strlen(domainid_channel),&asapenv,7 ,MQA_ENM_DIT_AGENT_OPS_TYPE,ASAPX_ENM_MATH_REPLACE_2 ,MQA_ENM_DIT_AGENT_REASON,ASAPX_ENM_MATH_REPLACE ,MQA_ENM_DIT_AGENT_COMPCODE,ASAPX_ENM_MATH_REPLACE_2 ,MQA_ENM_DIT_OBJECT_UTIL,ASAPX_ENM_MATH_REPLACE ,MQA_ENM_DIT_OBJECT,ASAPX_ENM_MATH_REPLACE ,MQA_ENM_DIT_OBJECT_BAD,ASAPX_ENM_MATH_REPLACE ,MQA_ENM_DIT_OBJECT_EXCLUDED,ASAPX_ENM_MATH_REPLACE); mqm_ini(srv[MQM_SRV].ulo_base); jt = JULIANTIMESTAMP(3); } void own_end(void) { int o_t,o_e,o_o; qs_ctrl_scan(srv[MQM_SRV].ulo_base,&o_t,&o_e,&o_o,true); ci_ctrl_scan(srv[MQM_SRV].ulo_base,&o_t,&o_e,&o_o,true); cs_ctrl_scan(srv[MQM_SRV].ulo_base,&o_t,&o_e,&o_o,true); DOMAIN_SET_STATE(&domain_queue,(short)ASAPX_ENM_STATUS_EXISTS); DOMAIN_SET_STATE(&domain_channel,(short)ASAPX_ENM_STATUS_EXISTS); DOMAIN_STOP(&domain_queue,false); DOMAIN_STOP(&domain_channel,false); } void own_set_default(void) { if (gen_set_ulo_max(MQM_ULO_MAX)) gen_exit(2000,"Invalid amount of ulo's specified\n"); if (rcv_set_open_cnt(0)) gen_exit(2001,"Invalid value for rcv_open_cnt specified\n"); } void S0008S12_mqmagt_29nov2005(void) { } int main(int argc,char *argv[],char **env) { int err_typ; gen_set_default(argc,argv); own_set_default(); gen_ini(argc-1,argv+1,env); own_ini(); err_typ = gen_process(); own_end(); gen_end((err_typ) ? 2 : 0,(short) err_typ,""); }