00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef STATUSCODES_H
00022 #define STATUSCODES_H
00023 #include <cadef.h>
00024 #include <map>
00025 #include <vector>
00026 #include <iostream>
00027 #include <sstream>
00028
00029 #include <cafeDataType.h>
00030
00031
00032 const unsigned short ICAFE_STATUS_BASE = 600;
00033 const unsigned short ICAFE_STATUS_CS = ICAFE_STATUS_BASE;
00034 const unsigned short ICAFE_STATUS_CFT = 700;
00035 const unsigned short ICAFE_STATUS_CA_OP = 800;
00036 const unsigned short ICAFE_STATUS_ERROR = 1000;
00037 const unsigned short ICAFE_FILE_ERROR = 1100;
00038 const unsigned short ICAFE_SERVICE_ERROR =1200;
00039 const unsigned short ICAFE_BITSHUFFLE_ERROR =1300;
00040 const unsigned short ICAFE_BSREAD_BASE = 1500;
00041 const unsigned short ICAFE_ERRNO_BASE = 5000;
00042
00043 const unsigned short ICAFE_SUCCESS = ECA_NORMAL;
00044 const unsigned short ICAFE_NORMAL = ECA_NORMAL;
00045
00046
00047
00048 enum CAFE_CS_STATE { ICAFE_CS_NEVER_CONN=ICAFE_STATUS_CS,
00049 ICAFE_CS_PREV_CONN,
00050 ICAFE_CS_CONN,
00051 ICAFE_CS_CLOSED,
00052 ICAFE_CS_DISCONN,
00053 ICAFE_CS_UNKNOWN
00054 };
00055
00056 enum CAFE_CFT_STATE{ ICAFE_TYPENOTCONN=ICAFE_STATUS_CFT,
00057 ICAFE_RULE_FALSE,
00058 ICAFE_BADCOUNT,
00059 ICAFE_CALLBACK_NOT_YET_INVOKED,
00060 ICAFE_WAITING_FOR_PREV_CALLBACK,
00061 ICAFE_CACHE_EMPTY,
00062 ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT,
00063 ICAFE_MONITOR_DELAYED_AS_CONN_DOWN,
00064 ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE,
00065 ICAFE_SET_AND_GET_MISMATCH
00066 };
00067
00068 enum CAFE_CC_STATE { ICAFE_CA_OP_GET=ICAFE_STATUS_CA_OP,
00069 ICAFE_CA_OP_PUT,
00070 ICAFE_CA_OP_CREATE_CHANNEL,
00071 ICAFE_CA_OP_ADD_EVENT,
00072 ICAFE_CA_OP_CLEAR_EVENT,
00073 ICAFE_CA_OP_OTHER,
00074 ICAFE_CA_OP_CONN_UP,
00075 ICAFE_CA_OP_CONN_DOWN
00076 };
00077
00078 enum CAFE_ERROR_STATE { ECAFE_NODATA=ICAFE_STATUS_ERROR,
00079 ECAFE_INVALID_TYPE,
00080 ECAFE_BADCOUNT,
00081 ECAFE_BADSTR,
00082 ECAFE_BADTYPE,
00083 ECAFE_NO_CONVERT,
00084 ECAFE_NULLCONTEXT,
00085 ECAFE_NULLCHID,
00086 ECAFE_NULLEVID,
00087 ECAFE_UNKNOWN_COLLECTION,
00088 ECAFE_EMPTY_COLLECTION,
00089 ECAFE_COLLECTION_PREV_DEF,
00090 ECAFE_COLLECTION_INVALID_MEMBER,
00091 ECAFE_RULE_FALSE,
00092 ECAFE_UNKNOWN_GROUP,
00093 ECAFE_EMPTY_GROUP,
00094 ECAFE_GROUP_PREV_DEF,
00095 ECAFE_INVALID_HANDLE,
00096 ECAFE_INVALID_GROUP_HANDLE,
00097 ECAFE_NORDACCESS,
00098 ECAFE_NOWTACCESS,
00099 ECAFE_TIMEOUT,
00100 ECAFE_CANNOT_OPEN_FILE,
00101 ECAFE_INVALID_SWITCH_CASE,
00102 ECAFE_PVALIAS_PREV_DEF,
00103 ECAFE_PVALIAS_INVALID,
00104 ECAFE_PVNAME_PREV_DEF_AS_PVALIAS,
00105 ECAFE_DEVICE_ATTRIB_NOT_FOUND,
00106 ECAFE_HASH_UNIQUEID_EXISTS,
00107 ECAFE_WRONG_CA_CONTEXT,
00108 ECAFE_INVALID_CAFENUM_POLICY_TYPE,
00109 ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED,
00110 ECAFE_INVALID_ENUM_INDEX,
00111 ECAFE_PVGROUP_GROUPHANDLE_MISMATCH,
00112 ECAFE_TIMEOUT_SET_AND_MATCH,
00113 ECAFE_HANDLE_MISMATCH_SET_AND_MATCH,
00114 ECAFE_INCONSISTENT_CONTAINER_CORRECTED
00115 };
00116
00117
00118 enum CAFE_FILE_ERROR { ECAFE_LOAD_COLLECTION=ICAFE_FILE_ERROR,
00119 ECAFE_LOAD_GROUP
00120 };
00121
00122
00123 enum CAFE_SERVICE_ERROR { ECAFE_BPM_DATA_IS_INVALID=ICAFE_SERVICE_ERROR
00124 };
00125
00126 enum CAFE_BITSHUFFLE_ERROR { ECAFE_BITSHUFF_DECOMPRESS=ICAFE_BITSHUFFLE_ERROR,
00127 ECAFE_BITSHUFF_ALLOCMEM,
00128 ECAFE_BITSHUFF_REALLOCMEM,
00129 ECAFE_BITSHUFF_BADCOUNT
00130 };
00131
00132 enum CAFE_BSREAD_ERROR {ECAFE_BSREAD_MULTIPART_MESS_NODATA=ICAFE_BSREAD_BASE,
00133 ECAFE_BSREAD_PARSEFAIL_MAINHEADER,
00134 ECAFE_BSREAD_PARSEFAIL_DATAHEADER,
00135 ECAFE_BSREAD_ZMQSTREAM_NULL
00136 };
00137
00138
00139
00140 enum CAFE_ERRNO_ERROR { ERRNO_EINTR =ICAFE_ERRNO_BASE+4,
00141 ERRNO_EAGAIN=ICAFE_ERRNO_BASE+11,
00142 ERRNO_EFAULT=ICAFE_ERRNO_BASE+14,
00143 ERRNO_EINVAL=ICAFE_ERRNO_BASE+22,
00144 ERRNO_ENOTSOCK=ICAFE_ERRNO_BASE+88,
00145 ERRNO_EPROTONOSUPPORT=ICAFE_ERRNO_BASE+93
00146 };
00147
00148
00149
00150
00151
00152
00153
00154 enum EPICS_GLOBAL_ALARM_CONDITION {STAT_NO_ALARM=0, STAT_READ, STAT_WRITE, STAT_HIHI, STAT_HIGH,
00155 STAT_LOLO, STAT_LOW, STAT_STATE, STAT_COS, STAT_COMM, STAT_TIMEOUT, STAT_HWLIMIT,
00156 STAT_CALC, STAT_SCAN, STAT_LINK,
00157 STAT_SOFT, STAT_BAD_SUB, STAT_UDF, STAT_DISABLE, STAT_SIMM, STAT_READ_ACCESS, STAT_WRITE_ACCESS
00158 };
00159
00160 enum EPICS_GLOBAL_ALARM_SEVERITY {SEV_NO_ALARM=0, SEV_MINOR, SEV_MAJOR, SEV_INVALID};
00161
00162
00163 class CAFEGlobalAlarmCondition {
00164 typedef std::map<int, std::string> mapIntString;
00165
00166 private:
00167 mapIntString mapAlarmCondition;
00168 mapIntString::iterator pos;
00169
00170 public:
00171 CAFEGlobalAlarmCondition() {
00172 mapAlarmCondition.insert(std::make_pair((int) STAT_NO_ALARM, "NO_ALARM"));
00173 mapAlarmCondition.insert(std::make_pair((int) STAT_READ, "READ"));
00174 mapAlarmCondition.insert(std::make_pair((int) STAT_WRITE, "WRITE"));
00175 mapAlarmCondition.insert(std::make_pair((int) STAT_HIHI, "HIHI"));
00176 mapAlarmCondition.insert(std::make_pair((int) STAT_HIGH, "HIGH"));
00177 mapAlarmCondition.insert(std::make_pair((int) STAT_LOLO, "LOLO"));
00178 mapAlarmCondition.insert(std::make_pair((int) STAT_LOW, "LOW"));
00179 mapAlarmCondition.insert(std::make_pair((int) STAT_STATE, "STATE"));
00180 mapAlarmCondition.insert(std::make_pair((int) STAT_COS, "COS"));
00181 mapAlarmCondition.insert(std::make_pair((int) STAT_COMM, "COMM"));
00182 mapAlarmCondition.insert(std::make_pair((int) STAT_TIMEOUT, "TIMEOUT"));
00183 mapAlarmCondition.insert(std::make_pair((int) STAT_HWLIMIT, "HWLIMIT"));
00184 mapAlarmCondition.insert(std::make_pair((int) STAT_CALC, "CALC"));
00185 mapAlarmCondition.insert(std::make_pair((int) STAT_SCAN, "SCAN"));
00186 mapAlarmCondition.insert(std::make_pair((int) STAT_LINK, "LINK"));
00187 mapAlarmCondition.insert(std::make_pair((int) STAT_SOFT, "SOFT"));
00188 mapAlarmCondition.insert(std::make_pair((int) STAT_BAD_SUB, "BAD_SUB"));
00189 mapAlarmCondition.insert(std::make_pair((int) STAT_UDF, "UDF"));
00190 mapAlarmCondition.insert(std::make_pair((int) STAT_DISABLE, "DISABLE"));
00191 mapAlarmCondition.insert(std::make_pair((int) STAT_SIMM, "SIMM"));
00192 mapAlarmCondition.insert(std::make_pair((int) STAT_READ_ACCESS, "READ_ACCESS"));
00193 mapAlarmCondition.insert(std::make_pair((int) STAT_WRITE_ACCESS, "WRITE_ACCESS"));
00194
00195 };
00196
00197 ~CAFEGlobalAlarmCondition() {};
00198
00199 std::string asString (int i) {
00200
00201 pos = mapAlarmCondition.find(i);
00202 if (pos != mapAlarmCondition.end()) {
00203 return pos->second;
00204 }
00205
00206 std::ostringstream oss;
00207 if (i == -1) {
00208 oss << "NO_DATA" ;
00209 return oss.str();
00210 }
00211 std::cout << "------------------------------------" << std::endl;
00212 oss << "INVALID ENUM VALUE: " << i ;
00213 std::cout << oss.str();
00214 std::cout << " VALID VALUES ARE: " << std::endl;
00215 printAll();
00216 std::cout << "--------------------------------------" << std::endl;
00217 return oss.str();
00218 };
00219
00220
00221 int asInt (std::string message) {
00222 for (pos=mapAlarmCondition.begin(); pos != mapAlarmCondition.end(); ++pos) {
00223
00224 if (pos->second==message) return pos->first;
00225
00226 else if ( (pos->second).find(message) != std::string::npos) return pos->first;
00227 }
00228 std::cout << "------------------------------------" << std::endl;
00229 std::cout << "INVALID INPUT: " << message << " VALID VALUES ARE: " << std::endl;
00230 printAll();
00231 std::cout << "------------------------------------" << std::endl;
00232 return -1;
00233 };
00234
00235 void getStates(std::vector<int> &vecI, std::vector<std::string> &vecS ) {
00236
00237 vecS.clear(); vecS.reserve(mapAlarmCondition.size());
00238 vecI.clear(); vecI.reserve(mapAlarmCondition.size());
00239
00240 for (pos=mapAlarmCondition.begin(); pos != mapAlarmCondition.end(); ++pos) {
00241 vecI.push_back(pos->first);
00242 vecS.push_back(pos->second);
00243 }
00244 return;
00245 }
00246
00247
00248 void printAll() {
00249 std::cout << "-------------------" << std::endl;
00250 std::cout << "EPICS GLOBAL ALARM CONDITION LIST" << std::endl;
00251 std::cout << "-------------------" << std::endl;
00252 for (pos=mapAlarmCondition.begin(); pos != mapAlarmCondition.end(); ++pos) {
00253 if (pos->first < 10) {
00254 std::cout << " " << pos->first << " " << pos->second << std::endl;
00255 }
00256 else {
00257 std::cout << pos->first << " " << pos->second << std::endl;
00258 }
00259 }
00260 std::cout << "------------------" << std::endl;
00261 };
00262
00263 };
00264
00265
00266
00267 class CAFEGlobalAlarmSeverity {
00268 typedef std::map<int, std::string> mapIntString;
00269
00270 private:
00271 mapIntString mapAlarmSeverity;
00272 mapIntString::iterator pos;
00273
00274 public:
00275 CAFEGlobalAlarmSeverity() {
00276 mapAlarmSeverity.insert(std::make_pair((int) SEV_NO_ALARM, "NO_ALARM"));
00277 mapAlarmSeverity.insert(std::make_pair((int) SEV_MINOR, "MINOR"));
00278 mapAlarmSeverity.insert(std::make_pair((int) SEV_MAJOR, "MAJOR"));
00279 mapAlarmSeverity.insert(std::make_pair((int) SEV_INVALID, "INVALID"));
00280 };
00281
00282 ~CAFEGlobalAlarmSeverity() {};
00283
00284 std::string asString (int i) {
00285
00286 pos = mapAlarmSeverity.find(i);
00287 if (pos != mapAlarmSeverity.end()) {
00288 return pos->second;
00289 }
00290
00291
00292 std::ostringstream oss;
00293 if (i == -1) {
00294 oss << "NO_DATA" ;
00295 return oss.str();
00296 }
00297 std::cout << "--------------------------------------" << std::endl;
00298 oss << "INVALID ENUM VALUE: " << i ;
00299 std::cout << oss.str();
00300 std::cout << " VALID VALUES ARE: " << std::endl;
00301 printAll();
00302 std::cout << "--------------------------------------" << std::endl;
00303 return oss.str();
00304 };
00305
00306
00307 int asInt (std::string message) {
00308 for (pos=mapAlarmSeverity.begin(); pos != mapAlarmSeverity.end(); ++pos) {
00309
00310 if (pos->second==message) return pos->first;
00311
00312 else if ( (pos->second).find(message) != std::string::npos) return pos->first;
00313 }
00314 std::cout << "--------------------------------------" << std::endl;
00315 std::cout << "INVALID INPUT: " << message << " VALID VALUES ARE: " << std::endl;
00316 printAll();
00317 std::cout << "--------------------------------------" << std::endl;
00318 return -1;
00319 };
00320
00321 void getStates(std::vector<int> &vecI, std::vector<std::string> &vecS ) {
00322
00323 vecS.clear(); vecS.reserve(mapAlarmSeverity.size());
00324 vecI.clear(); vecI.reserve(mapAlarmSeverity.size());
00325
00326 for (pos=mapAlarmSeverity.begin(); pos != mapAlarmSeverity.end(); ++pos) {
00327
00328 vecI.push_back(pos->first);
00329 vecS.push_back(pos->second);
00330 }
00331 return;
00332 }
00333
00334 void printAll() {
00335 std::cout << "-------------------" << std::endl;
00336 std::cout << "EPICS GLOBAL ALARM SEVERITY LIST" << std::endl;
00337 std::cout << "-------------------" << std::endl;
00338 for (pos=mapAlarmSeverity.begin(); pos != mapAlarmSeverity.end(); ++pos) {
00339 std::cout << pos->first << " " << pos->second << std::endl;
00340 }
00341 std::cout << "------------------" << std::endl;
00342 };
00343
00344 };
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457 class CAFEStatusInfo {
00458 typedef std::map<int, std::string> mapLongString;
00459 private:
00460 mapLongString mapStatusInfo;
00461 mapLongString::iterator posStatusInfo;
00462
00463 public:
00464 CAFEStatusInfo() {
00465
00466
00467 mapStatusInfo.insert(std::make_pair((int) ICAFE_CA_OP_CONN_UP, "Status of channel connection: channel UP " ));
00468 mapStatusInfo.insert(std::make_pair((int) ICAFE_CA_OP_CONN_DOWN, "Status of channel connection: channel DOWN! " ));
00469 mapStatusInfo.insert(std::make_pair((int) ICAFE_CS_NEVER_CONN, "Valid chid; server not found or unavailable " ));
00470 mapStatusInfo.insert(std::make_pair((int) ICAFE_CS_PREV_CONN, "Valid chid; previously connected to server " ));
00471 mapStatusInfo.insert(std::make_pair((int) ICAFE_CS_CONN, "Valid chid; connected to server " ));
00472 mapStatusInfo.insert(std::make_pair((int) ICAFE_CS_CLOSED, "Channel deleted by user " ));
00473 mapStatusInfo.insert(std::make_pair((int) ICAFE_CS_DISCONN, "Channel disconnected " ));
00474 mapStatusInfo.insert(std::make_pair((int) ICAFE_CS_UNKNOWN, "Unknown state!!! " ));
00475 mapStatusInfo.insert(std::make_pair((int) ICAFE_TYPENOTCONN, "ca_field_type() channel is disconnected " ));
00476 mapStatusInfo.insert(std::make_pair((int) ICAFE_RULE_FALSE, "CAFE collection rule for channel set to false by user " ));
00477 mapStatusInfo.insert(std::make_pair((int) ICAFE_BADCOUNT, "nelemClient exceeds nelemNative (max. allowed)! Set nelemClient/nelemRequest to nelemNative "));
00478 mapStatusInfo.insert(std::make_pair((int) ICAFE_CALLBACK_NOT_YET_INVOKED, "Callback for get/set operation has not yet been invoked "));
00479 mapStatusInfo.insert(std::make_pair((int) ICAFE_WAITING_FOR_PREV_CALLBACK, "Callback for previous get/set operation not yet invoked "));
00480 mapStatusInfo.insert(std::make_pair((int) ICAFE_CACHE_EMPTY, "Data buffer is empty; get message to IOC not yet invoked"));
00481 mapStatusInfo.insert(std::make_pair((int) ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT, "User supplied callback function not provided when expected "));
00482
00483 mapStatusInfo.insert(std::make_pair((int) ICAFE_MONITOR_DELAYED_AS_CONN_DOWN, "Channel disconnected. Monitor will be started on connection "));
00484 mapStatusInfo.insert(std::make_pair((int) ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE, "Handle has monitor, hence data retrieved from cache "));
00485
00486 mapStatusInfo.insert(std::make_pair((int) ICAFE_SET_AND_GET_MISMATCH, "Set and Get values from SetAndGetMethod do not match"));
00487
00488
00489 mapStatusInfo.insert(std::make_pair((int) ECAFE_NODATA, "Requested data transfer is of zero length! " ));
00490 mapStatusInfo.insert(std::make_pair((int) ECAFE_INVALID_TYPE, "Invalid data type! " ));
00491 mapStatusInfo.insert(std::make_pair((int) ECAFE_BADCOUNT, "nelemClient exceeds nelemNative (max. allowed)! Set nelemClient/nelemRequest to nelemNative "));
00492 mapStatusInfo.insert(std::make_pair((int) ECAFE_BADSTR, "Empty string for process variable name! " ));
00493 mapStatusInfo.insert(std::make_pair((int) ECAFE_BADTYPE, "Invalid datatype! " ));
00494 mapStatusInfo.insert(std::make_pair((int) ECAFE_NO_CONVERT, "set()/get() cannot convert to/from native datatype! " ));
00495
00496 mapStatusInfo.insert(std::make_pair((int) ECAFE_NULLCONTEXT, "Error: current context is null; CA not initialized. " ));
00497 mapStatusInfo.insert(std::make_pair((int) ECAFE_NULLCHID, "Error: chid is null!! " ));
00498
00499 mapStatusInfo.insert(std::make_pair((int) ECAFE_NULLEVID, "Monitor() evid is null! " ));
00500 mapStatusInfo.insert(std::make_pair((int) ECAFE_UNKNOWN_COLLECTION, "CAFE collection is unknown/unregistered or invalid! " ));
00501 mapStatusInfo.insert(std::make_pair((int) ECAFE_EMPTY_COLLECTION, "CAFE collection is empty; has no members! " ));
00502 mapStatusInfo.insert(std::make_pair((int) ECAFE_COLLECTION_PREV_DEF, "CAFE collection with this name already exists! " ));
00503 mapStatusInfo.insert(std::make_pair((int) ECAFE_COLLECTION_INVALID_MEMBER,"Device is not a member of the CAFE collection! " ));
00504
00505 mapStatusInfo.insert(std::make_pair((int) ECAFE_RULE_FALSE, "CAFE rule for channel set to false by user " ));
00506
00507 mapStatusInfo.insert(std::make_pair((int) ECAFE_UNKNOWN_GROUP, "CAFE group is unknown/unregistered or invalid! " ));
00508 mapStatusInfo.insert(std::make_pair((int) ECAFE_EMPTY_GROUP, "CAFE group is empty; has no members! " ));
00509 mapStatusInfo.insert(std::make_pair((int) ECAFE_GROUP_PREV_DEF, "CAFE group with this name already exists! " ));
00510
00511 mapStatusInfo.insert(std::make_pair((int) ECAFE_INVALID_HANDLE, "Handle does not exist! " ));
00512 mapStatusInfo.insert(std::make_pair((int) ECAFE_INVALID_GROUP_HANDLE, "Group handle does not exist! " ));
00513
00514 mapStatusInfo.insert(std::make_pair((int) ECAFE_NORDACCESS, "Channel does not have READ access! " ));
00515 mapStatusInfo.insert(std::make_pair((int) ECAFE_NOWTACCESS, "Channel does not have WRITE access! " ));
00516 mapStatusInfo.insert(std::make_pair((int) ECAFE_TIMEOUT, "Callback function not activated within specified timeout period " ));
00517
00518 mapStatusInfo.insert(std::make_pair((int) ECAFE_CANNOT_OPEN_FILE, "Cannot open file! " ));
00519
00520 mapStatusInfo.insert(std::make_pair((int) ECAFE_INVALID_SWITCH_CASE, "Internal CAFE Error: Invalid option for switch case " ));
00521
00522 mapStatusInfo.insert(std::make_pair((int) ECAFE_PVALIAS_INVALID, "Requested PVAlias is another handle's PV name. Bizarre! " ));
00523 mapStatusInfo.insert(std::make_pair((int) ECAFE_PVALIAS_PREV_DEF, "Requested PVAlias already exists! " ));
00524 mapStatusInfo.insert(std::make_pair((int) ECAFE_PVNAME_PREV_DEF_AS_PVALIAS, "PVName clashes with previously defined PVAlias!" ));
00525
00526 mapStatusInfo.insert(std::make_pair((int) ECAFE_DEVICE_ATTRIB_NOT_FOUND, "Deliminator - hence dev/attrib - not found in PV name" ));
00527
00528 mapStatusInfo.insert(std::make_pair((int) ECAFE_HASH_UNIQUEID_EXISTS,"cafeConduit object already inserted (handle exists) "));
00529 mapStatusInfo.insert(std::make_pair((int) ECAFE_WRONG_CA_CONTEXT,"Operation cannot be carried out for this ca_client_context "));
00530 mapStatusInfo.insert(std::make_pair((int) ECAFE_INVALID_CAFENUM_POLICY_TYPE, "Not a valid CAFENUM type for this policy. See policies.h "));
00531 mapStatusInfo.insert(std::make_pair((int) ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED, "See define.sh to change the allowed maximum "));
00532
00533 mapStatusInfo.insert(std::make_pair((int) ECAFE_INVALID_ENUM_INDEX, "DBR_ENUM value exceeds the number of enum string options " ));
00534
00535 mapStatusInfo.insert(std::make_pair((int) ECAFE_PVGROUP_GROUPHANDLE_MISMATCH, "PVGroup previously assigned to another group handle " ));
00536
00537 mapStatusInfo.insert(std::make_pair((int) ECAFE_TIMEOUT_SET_AND_MATCH, "Readback channel did not reach set value within specified timeout period "));
00538
00539 mapStatusInfo.insert(std::make_pair((int) ECAFE_HANDLE_MISMATCH_SET_AND_MATCH, "Number of set/readback handles do not match"));
00540 mapStatusInfo.insert(std::make_pair((int) ECAFE_INCONSISTENT_CONTAINER_CORRECTED, "Boost container required update after consistency check"));
00541
00542 mapStatusInfo.insert(std::make_pair((int) ECAFE_LOAD_COLLECTION, "CAFE collection could not be loaded from xml configuration file " ));
00543 mapStatusInfo.insert(std::make_pair((int) ECAFE_LOAD_GROUP, "CAFE group could not be loaded from group xml configuration file " ));
00544
00545 mapStatusInfo.insert(std::make_pair((int) ECAFE_BPM_DATA_IS_INVALID, "CAFE BPM Service: Data Validity channel reports BPM data is INVALID " ));
00546
00547 mapStatusInfo.insert(std::make_pair((int) ECAFE_BITSHUFF_DECOMPRESS, "Bitshuffle decompress failed within CAFE BS read" ));
00548 mapStatusInfo.insert(std::make_pair((int) ECAFE_BITSHUFF_ALLOCMEM, "Bitshuffle memory allocation failed within CAFE BS read" ));
00549 mapStatusInfo.insert(std::make_pair((int) ECAFE_BITSHUFF_REALLOCMEM, "Bitshuffle memory reallocation failed within CAFE BS read" ));
00550 mapStatusInfo.insert(std::make_pair((int) ECAFE_BITSHUFF_BADCOUNT, "Bitshuffle data size is too small (<BSREAD_PREBLOB_BYTES)" ));
00551
00552 mapStatusInfo.insert(std::make_pair((int) ECAFE_BSREAD_MULTIPART_MESS_NODATA, "No data for this channel from BS read" ));
00553 mapStatusInfo.insert(std::make_pair((int) ECAFE_BSREAD_PARSEFAIL_MAINHEADER, "Main header in BS read could not be parsed" ));
00554 mapStatusInfo.insert(std::make_pair((int) ECAFE_BSREAD_PARSEFAIL_DATAHEADER, "Data header in BS read could not be parsed" ));
00555 mapStatusInfo.insert(std::make_pair((int) ECAFE_BSREAD_ZMQSTREAM_NULL, "ZMQ stream not created. Check configuration parameters"));
00556 mapStatusInfo.insert(std::make_pair((int) ERRNO_EINTR, "C ERRNO CODE: Interrupted system call" ));
00557 mapStatusInfo.insert(std::make_pair((int) ERRNO_EAGAIN, "C ERRNO CODE: Try again" ));
00558 mapStatusInfo.insert(std::make_pair((int) ERRNO_EFAULT, "C ERRNO CODE: Bad address" ));
00559 mapStatusInfo.insert(std::make_pair((int) ERRNO_EINVAL, "C ERROR CODE: Invalid argument" ));
00560 mapStatusInfo.insert(std::make_pair((int) ERRNO_ENOTSOCK, "C ERRNO CODE: Socket operation on non-socket" ));
00561 mapStatusInfo.insert(std::make_pair((int) ERRNO_EPROTONOSUPPORT, "C ERRNO CODE: Protocol not supported" ));
00562 }
00563
00564 ~CAFEStatusInfo() {};
00565
00566
00567 std::string message (int i) {
00568
00569 if (i<ICAFE_STATUS_BASE) {
00570 std::string c= ca_message(i);
00571 return c;
00572 }
00573 else {
00574 posStatusInfo = mapStatusInfo.find(i);
00575 if (posStatusInfo != mapStatusInfo.end()) {
00576 return posStatusInfo->second;
00577 }
00578
00579 std::ostringstream oss;
00580 oss << "INVALID ERROR CODE: " << i ;
00581
00582
00583 return oss.str();
00584
00585 }
00586 };
00587
00588
00589
00590 void printAll() {
00591 std::cout << "-----------------------" << std::endl;
00592 std::cout << "CAFE ERROR MESSAGE LIST" << std::endl;
00593 std::cout << "-----------------------" << std::endl;
00594 for (posStatusInfo=mapStatusInfo.begin(); posStatusInfo != mapStatusInfo.end(); ++posStatusInfo) {
00595 std::cout << posStatusInfo->first << " " << posStatusInfo->second << std::endl;
00596 }
00597 std::cout << "------------------" << std::endl;
00598 };
00599 };
00600
00601
00602
00603
00604
00605 class CAFEStatusCode {
00606 typedef std::map<int, std::string> mapLongString;
00607
00608 private:
00609 mapLongString mapStatusCode;
00610 mapLongString::iterator pos;
00611
00612 public:
00613 CAFEStatusCode() {
00614 mapStatusCode.insert(std::make_pair(ECA_NORMAL, "SUCCESS: ICAFE_NORMAL"));
00615 mapStatusCode.insert(std::make_pair(ECA_ALLOCMEM, "WARNING: ECA_ALLOCMEM"));
00616 mapStatusCode.insert(std::make_pair(ECA_TOLARGE, "WARNING: ECA_TOLARGE"));
00617 mapStatusCode.insert(std::make_pair(ECA_TIMEOUT, "WARNING: ECA_TIMEOUT"));
00618 mapStatusCode.insert(std::make_pair(ECA_BADTYPE, "ERROR: ECA_BADTYPE"));
00619 mapStatusCode.insert(std::make_pair(ECA_INTERNAL, "FATAL: ECA_INTERNAL"));
00620 mapStatusCode.insert(std::make_pair(ECA_GETFAIL, "WARNING: ECA_GETFAIL"));
00621 mapStatusCode.insert(std::make_pair(ECA_PUTFAIL, "WARNING: ECA_PUTFAIL"));
00622 mapStatusCode.insert(std::make_pair(ECA_BADCOUNT, "WARNING: ECA_BADCOUNT"));
00623 mapStatusCode.insert(std::make_pair(ECA_BADSTR, "ERROR: ECA_BADSTR"));
00624 mapStatusCode.insert(std::make_pair(ECA_DISCONN, "WARNING: ECA_DISCONN"));
00625 mapStatusCode.insert(std::make_pair(ECA_DBLCHNL, "WARNING: ECA_DBLCHNL"));
00626 mapStatusCode.insert(std::make_pair(ECA_EVDISALLOW, "ERROR: ECA_EVDISALLOW"));
00627 mapStatusCode.insert(std::make_pair(ECA_BADMONID, "ERROR: ECA_BADMONID"));
00628 mapStatusCode.insert(std::make_pair(ECA_BADMASK, "ERROR: ECA_BADMASK"));
00629 mapStatusCode.insert(std::make_pair(ECA_IODONE , "INFO: ECA_IODONE "));
00630 mapStatusCode.insert(std::make_pair(ECA_IOINPROGRESS, "INFO: ECA_IOINPROGRESS"));
00631 mapStatusCode.insert(std::make_pair(ECA_BADSYNCGRP, "ERROR: ECA_BADSYNCGRP"));
00632 mapStatusCode.insert(std::make_pair(ECA_PUTCBINPROG, "ERROR: ECA_PUTCBINPROG"));
00633 mapStatusCode.insert(std::make_pair(ECA_NORDACCESS, "WARNING: ECA_NORDACCESS"));
00634 mapStatusCode.insert(std::make_pair(ECA_NOWTACCESS, "WARNING: ECA_NOWTACCESS"));
00635 mapStatusCode.insert(std::make_pair(ECA_ANACHRONISM, "ERROR: ECA_ANACHRONISM"));
00636 mapStatusCode.insert(std::make_pair(ECA_NOSEARCHADDR, "WARNING: ECA_NOSEARCHADDR"));
00637 mapStatusCode.insert(std::make_pair(ECA_NOCONVERT, "WARNING: ECA_NOCONVERT"));
00638 mapStatusCode.insert(std::make_pair(ECA_BADCHID, "ERROR: ECA_BADCHID"));
00639 mapStatusCode.insert(std::make_pair(ECA_BADFUNCPTR, "ERROR: ECA_BADFUNCPTR"));
00640 mapStatusCode.insert(std::make_pair(ECA_ISATTACHED, "WARNING: ECA_ISATTACHED"));
00641 mapStatusCode.insert(std::make_pair(ECA_UNAVAILINSERV, "WARNING: ECA_UNAVAILINSERV"));
00642 mapStatusCode.insert(std::make_pair(ECA_CHANDESTROY, "WARNING: ECA_CHANDESTROY"));
00643 mapStatusCode.insert(std::make_pair(ECA_BADPRIORITY, "ERROR: ECA_BADPRIORITY"));
00644 mapStatusCode.insert(std::make_pair(ECA_NOTTHREADED, "ERROR: ECA_NOTTHREADED"));
00645 mapStatusCode.insert(std::make_pair(ECA_16KARRAYCLIENT,"WARNING: ECA_16KARRAYCLIENT"));
00646 mapStatusCode.insert(std::make_pair(ECA_CONNSEQTMO, "WARNING: ECA_CONNSEQTMO"));
00647 mapStatusCode.insert(std::make_pair(ECA_UNRESPTMO , "WARNING: ECA_UNRESPTMO"));
00648 mapStatusCode.insert(std::make_pair((int) ICAFE_CS_NEVER_CONN, "CHANNEL STATE: ICAFE_CS_NEVER_CONN" ));
00649 mapStatusCode.insert(std::make_pair((int) ICAFE_CS_PREV_CONN, "CHANNEL STATE: ICAFE_CS_PREV_CONN " ));
00650 mapStatusCode.insert(std::make_pair((int) ICAFE_CS_CONN, "CHANNEL STATE: ICAFE_CS_CONN" ));
00651 mapStatusCode.insert(std::make_pair((int) ICAFE_CS_CLOSED, "CHANNEL STATE: ICAFE_CS_CLOSED" ));
00652 mapStatusCode.insert(std::make_pair((int) ICAFE_CS_DISCONN, "CHANNEL STATE: ICAFE_CS_DISCONN" ));
00653 mapStatusCode.insert(std::make_pair((int) ICAFE_CS_UNKNOWN, "CHANNEL STATE: ICAFE_CS_UNKNOWN" ));
00654
00655 mapStatusCode.insert(std::make_pair((int) ICAFE_TYPENOTCONN, "CHANNEL FIELD TYPE: ICAFE_CFT_TYPENOTCONN"));
00656 mapStatusCode.insert(std::make_pair((int) ICAFE_RULE_FALSE, "CAFE INFO: ICAFE_RULE_FALSE"));
00657 mapStatusCode.insert(std::make_pair((int) ICAFE_BADCOUNT, "CAFE INFO: ICAFE_BADCOUNT"));
00658 mapStatusCode.insert(std::make_pair((int) ICAFE_CALLBACK_NOT_YET_INVOKED, "CAFE_INFO: ICAFE_CALLBACK_NOT_YET_INVOKED"));
00659 mapStatusCode.insert(std::make_pair((int) ICAFE_WAITING_FOR_PREV_CALLBACK, "CAFE_INFO: ICAFE_WAITING_FOR_PREV_CALLBACK"));
00660 mapStatusCode.insert(std::make_pair((int) ICAFE_CACHE_EMPTY, "CAFE_INFO:ICAFE_CACHE_EMPTY"));
00661 mapStatusCode.insert(std::make_pair((int) ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT, "CAFE_INFO: ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT"));
00662 mapStatusCode.insert(std::make_pair((int) ICAFE_CA_OP_CONN_UP, "CHANNEL CONNECTION: ICAFE_CC_OP_CONN_UP" ));
00663 mapStatusCode.insert(std::make_pair((int) ICAFE_CA_OP_CONN_DOWN, "CHANNEL CONNECTION: ICAFE_CC_OP_CONN_DOWN" ));
00664
00665 mapStatusCode.insert(std::make_pair((int) ICAFE_MONITOR_DELAYED_AS_CONN_DOWN, "CHANNEL CONNECTION: ICAFE_MONITOR_DELAYED_AS_CONN_DOWN"));
00666 mapStatusCode.insert(std::make_pair((int) ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE, "CAFE_INFO: ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE"));
00667
00668 mapStatusCode.insert(std::make_pair((int) ICAFE_SET_AND_GET_MISMATCH, "CAFE_INFO: ICAFE_SET_AND_GET_MISMATCH"));
00669
00670 mapStatusCode.insert(std::make_pair((int) ECAFE_NODATA, "CAFE ERROR: ECAFE_NODATA"));
00671 mapStatusCode.insert(std::make_pair((int) ECAFE_BADCOUNT, "CAFE ERROR: ECAFE_BADCOUNT"));
00672 mapStatusCode.insert(std::make_pair((int) ECAFE_BADSTR, "CAFE ERROR: ECAFE_BADSTR"));
00673 mapStatusCode.insert(std::make_pair((int) ECAFE_BADTYPE, "CAFE ERROR: ECAFE_BADTYPE"));
00674
00675 mapStatusCode.insert(std::make_pair((int) ECAFE_NO_CONVERT, "CAFE ERROR: ECAFE_NO_CONVERT"));
00676 mapStatusCode.insert(std::make_pair((int) ECAFE_NULLCONTEXT, "CAFE ERROR: ECAFE_NULLCONTEXT"));
00677 mapStatusCode.insert(std::make_pair((int) ECAFE_NULLCHID, "CAFE ERROR: ECAFE_NULLCHID"));
00678 mapStatusCode.insert(std::make_pair((int) ECAFE_NULLEVID, "CAFE ERROR: ECAFE_NULLEVID"));
00679 mapStatusCode.insert(std::make_pair((int) ECAFE_UNKNOWN_COLLECTION, "CAFE ERROR: ECAFE_UNKNOWN_COLLECTION"));
00680 mapStatusCode.insert(std::make_pair((int) ECAFE_EMPTY_COLLECTION, "CAFE ERROR: ECAFE_EMPTY_COLLECTION"));
00681 mapStatusCode.insert(std::make_pair((int) ECAFE_COLLECTION_PREV_DEF, "CAFE ERROR: ECAFE_COLLECTION_PREV_DEF"));
00682 mapStatusCode.insert(std::make_pair((int) ECAFE_COLLECTION_INVALID_MEMBER, "CAFE ERROR: ECAFE_COLLECTION_INVALID_MEMBER"));
00683 mapStatusCode.insert(std::make_pair((int) ECAFE_RULE_FALSE, "CAFE ERROR/INFO: ECAFE_RULE_FALSE"));
00684 mapStatusCode.insert(std::make_pair((int) ECAFE_UNKNOWN_GROUP, "CAFE ERROR: ECAFE_UNKNOWN_GROUP"));
00685 mapStatusCode.insert(std::make_pair((int) ECAFE_EMPTY_GROUP, "CAFE ERROR: ECAFE_EMPTY_GROUP"));
00686 mapStatusCode.insert(std::make_pair((int) ECAFE_GROUP_PREV_DEF, "CAFE ERROR: ECAFE_GROUP_PREV_DEF"));
00687 mapStatusCode.insert(std::make_pair((int) ECAFE_INVALID_HANDLE, "CAFE ERROR: ECAFE_INVALID_HANDLE"));
00688 mapStatusCode.insert(std::make_pair((int) ECAFE_INVALID_GROUP_HANDLE, "CAFE ERROR: ECAFE_INVALID_GROUP_HANDLE"));
00689 mapStatusCode.insert(std::make_pair((int) ECAFE_NORDACCESS, "CAFE ERROR: ECAFE_NORDACCESS"));
00690 mapStatusCode.insert(std::make_pair((int) ECAFE_NOWTACCESS, "CAFE ERROR: ECAFE_NOWTACCESS"));
00691 mapStatusCode.insert(std::make_pair((int) ECAFE_TIMEOUT, "CAFE ERROR: ECAFE_TIMEOUT"));
00692
00693 mapStatusCode.insert(std::make_pair((int) ECAFE_CANNOT_OPEN_FILE, "CAFE ERROR: ECAFE_CANNOT_OPEN_FILE"));
00694 mapStatusCode.insert(std::make_pair((int) ECAFE_INVALID_SWITCH_CASE, "CAFE ERROR: ECAFE_INVALID_SWITCH_CASE"));
00695 mapStatusCode.insert(std::make_pair((int) ECAFE_PVALIAS_INVALID, "CAFE ERROR: ECAFE_PVALIAS_INVALID"));
00696 mapStatusCode.insert(std::make_pair((int) ECAFE_PVALIAS_PREV_DEF, "CAFE ERROR: ECAFE_PVALIAS_PREV_DEF"));
00697 mapStatusCode.insert(std::make_pair((int) ECAFE_PVNAME_PREV_DEF_AS_PVALIAS,"CAFE ERROR: ECAFE_PVNAME_PREV_DEF_AS_PVALIAS"));
00698 mapStatusCode.insert(std::make_pair((int) ECAFE_DEVICE_ATTRIB_NOT_FOUND,"CAFE ERROR: ECAFE_DEVICE_ATTRIB_NOT_FOUND"));
00699 mapStatusCode.insert(std::make_pair((int) ECAFE_HASH_UNIQUEID_EXISTS, "CAFE ERROR: ECAFE_HASH_UNIQUEID_EXISTS"));
00700 mapStatusCode.insert(std::make_pair((int) ECAFE_WRONG_CA_CONTEXT, "CAFE ERROR: ECAFE_WRONG_CA_CONTEXT"));
00701 mapStatusCode.insert(std::make_pair((int) ECAFE_INVALID_CAFENUM_POLICY_TYPE, "CAFE ERROR: ECAFE_INVALID_CAFENUM_POLICY_TYPE"));
00702 mapStatusCode.insert(std::make_pair((int) ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED, "CAFE_ERROR: ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED"));
00703 mapStatusCode.insert(std::make_pair((int) ECAFE_INVALID_ENUM_INDEX, "CAFE_ERROR: ECAFE_INVALID_ENUM_INDEX"));
00704 mapStatusCode.insert(std::make_pair((int) ECAFE_PVGROUP_GROUPHANDLE_MISMATCH, "CAFE ERROR:ECAFE_PVGROUP_GROUPHANDLE_MISMATCH"));
00705
00706 mapStatusCode.insert(std::make_pair((int) ECAFE_TIMEOUT_SET_AND_MATCH, "CAFE ERROR: CAFE_TIMEOUT_SET_AND_MATCH"));
00707 mapStatusCode.insert(std::make_pair((int) ECAFE_HANDLE_MISMATCH_SET_AND_MATCH, "CAFE ERROR: CAFE_HANDLE_MISMATCH_SET_AND_MATCH"));
00708 mapStatusCode.insert(std::make_pair((int) ECAFE_INCONSISTENT_CONTAINER_CORRECTED,"CAFE ERROR: ECAFE_INCONSISTENT_CONTAINER_CORRECTED"));
00709
00710 mapStatusCode.insert(std::make_pair((int) ECAFE_LOAD_COLLECTION, "CAFE ERROR: ECAFE_LOAD_COLLECTION"));
00711 mapStatusCode.insert(std::make_pair((int) ECAFE_LOAD_GROUP, "CAFE ERROR: ECAFE_LOAD_GROUP"));
00712
00713 mapStatusCode.insert(std::make_pair((int) ECAFE_BPM_DATA_IS_INVALID, "CAFE_ERROR: ECAFE_BPM_DATA_IS_INVALID" ));
00714
00715 mapStatusCode.insert(std::make_pair((int) ECAFE_BITSHUFF_DECOMPRESS, "CAFE_ERROR: ECAFE_BITSHUF_DECOMPRESS" ));
00716 mapStatusCode.insert(std::make_pair((int) ECAFE_BITSHUFF_REALLOCMEM, "CAFE_WARN: ECAFE_BITSHUFF_REALLOCMEM" ));
00717 mapStatusCode.insert(std::make_pair((int) ECAFE_BITSHUFF_ALLOCMEM, "CAFE_ERROR: ECAFE_BITSHUFF_ALLOCMEM" ));
00718 mapStatusCode.insert(std::make_pair((int) ECAFE_BITSHUFF_BADCOUNT, "CAFE_ERROR: ECAFE_BITSHUFF_BADCOUNT" ));
00719
00720 mapStatusCode.insert(std::make_pair((int) ECAFE_BSREAD_MULTIPART_MESS_NODATA, "CAFE_WARN: ECAFE_BSREAD_MULTIPART_MESS_NODATA"));
00721 mapStatusCode.insert(std::make_pair((int) ECAFE_BSREAD_PARSEFAIL_MAINHEADER, "CAFE_ERROR: ECAFE_BSREAD_PARSEFAIL_MAINHEADER"));
00722 mapStatusCode.insert(std::make_pair((int) ECAFE_BSREAD_PARSEFAIL_DATAHEADER, "CAFE_ERROR: ECAFE_BSREAD_PARSEFAIL_DATAHEADER"));
00723 mapStatusCode.insert(std::make_pair((int) ECAFE_BSREAD_ZMQSTREAM_NULL, "CAFE_WARN: ECAFE_BSREAD_ZMQSTREAM_NULL"));
00724
00725 mapStatusCode.insert(std::make_pair((int) ERRNO_EINTR, "CAFE_ERROR: ERRNO_EINTR" ));
00726 mapStatusCode.insert(std::make_pair((int) ERRNO_EAGAIN, "CAFE_WARN: ERRNO_EAGAIN" ));
00727 mapStatusCode.insert(std::make_pair((int) ERRNO_EFAULT, "CAFE_ERROR: ERRNO_EFAULT" ));
00728 mapStatusCode.insert(std::make_pair((int) ERRNO_EINVAL, "CAFE_ERROR: ERRNO_EINVAL" ));
00729 mapStatusCode.insert(std::make_pair((int) ERRNO_ENOTSOCK, "CAFE_ERROR: ERRNO_ENOTSOCK" ));
00730 mapStatusCode.insert(std::make_pair((int) ERRNO_EPROTONOSUPPORT, "CAFE_ERROR: ERRNO_EPROTONOSUPPORT" ));
00731
00732 };
00733
00734 ~CAFEStatusCode() {};
00735
00736 std::string message (int i) {
00737
00738 pos = mapStatusCode.find(i);
00739 if (pos != mapStatusCode.end()) {
00740 return pos->second;
00741 }
00742
00743 std::ostringstream oss;
00744 oss << "INVALID ERROR CODE: " << i ;
00745
00746
00747 return oss.str();
00748 };
00749
00750
00751 void getStates(std::vector<int> &vecI, std::vector<std::string> &vecS ) {
00752
00753 vecS.clear(); vecS.reserve(mapStatusCode.size());
00754 vecI.clear(); vecI.reserve(mapStatusCode.size());
00755
00756 for (pos=mapStatusCode.begin(); pos != mapStatusCode.end(); ++pos) {
00757 std::size_t found = (pos->second).find(": ");
00758 if (found!=std::string::npos) {
00759
00760 vecS.push_back((pos->second).substr(found+2,(pos->second).length()));
00761 }
00762 else {
00763 vecS.push_back(pos->second);
00764 }
00765 vecI.push_back(pos->first);
00766 }
00767 return;
00768 };
00769
00770 std::string msgIDAsString (int i) {
00771
00772 pos = mapStatusCode.find(i);
00773 if (pos != mapStatusCode.end()) {
00774 std::size_t found = (pos->second).find(": ");
00775 if (found!=std::string::npos) {
00776
00777 return (pos->second).substr(found+2,(pos->second).length());
00778 }
00779 else {
00780 return pos->second;
00781 }
00782 }
00783
00784 std::ostringstream oss;
00785 oss << "INVALID ERROR CODE: " << i ;
00786
00787
00788 return oss.str();
00789 };
00790
00791
00792 int enumIs (std::string message) {
00793 for (pos=mapStatusCode.begin(); pos != mapStatusCode.end(); ++pos) {
00794
00795 if (pos->second==message) return pos->first;
00796
00797 else if ( (pos->second).find(message) != std::string::npos) return pos->first;
00798 }
00799 return -1;
00800 };
00801
00802 bool isTimeout(int statusCodeToCheck) {
00803 if (statusCodeToCheck==ECA_TIMEOUT || statusCodeToCheck==ECAFE_TIMEOUT) {
00804 return true;
00805 }
00806 else {return false;}
00807 }
00808
00809 void printAll() {
00810 std::cout << "-------------------" << std::endl;
00811 std::cout << "CAFE ERROR CODE LIST" << std::endl;
00812 std::cout << "-------------------" << std::endl;
00813 for (pos=mapStatusCode.begin(); pos != mapStatusCode.end(); ++pos) {
00814 std::cout << pos->first << " " << pos->second << std::endl;
00815 }
00816 std::cout << "------------------" << std::endl;
00817 };
00818
00819 };
00820
00821
00822
00823 class CAFEStatusSeverity {
00824 typedef std::map<int, std::string> mapLongString;
00825
00826 private:
00827 mapLongString mapStatusSeverity;
00828 mapLongString::iterator pos;
00829
00830 public:
00831 CAFEStatusSeverity() {
00832 mapStatusSeverity.insert(std::make_pair(ECA_NORMAL, "INFO"));
00833 mapStatusSeverity.insert(std::make_pair(ECA_ALLOCMEM, "WARN"));
00834 mapStatusSeverity.insert(std::make_pair(ECA_TOLARGE, "WARN"));
00835 mapStatusSeverity.insert(std::make_pair(ECA_TIMEOUT, "WARN"));
00836 mapStatusSeverity.insert(std::make_pair(ECA_BADTYPE, "ERROR"));
00837 mapStatusSeverity.insert(std::make_pair(ECA_INTERNAL, "FATAL"));
00838 mapStatusSeverity.insert(std::make_pair(ECA_GETFAIL, "WARN"));
00839 mapStatusSeverity.insert(std::make_pair(ECA_PUTFAIL, "WARN"));
00840 mapStatusSeverity.insert(std::make_pair(ECA_BADCOUNT, "WARN"));
00841 mapStatusSeverity.insert(std::make_pair(ECA_BADSTR, "ERROR"));
00842 mapStatusSeverity.insert(std::make_pair(ECA_DISCONN, "WARN"));
00843 mapStatusSeverity.insert(std::make_pair(ECA_DBLCHNL, "WARN"));
00844 mapStatusSeverity.insert(std::make_pair(ECA_EVDISALLOW, "ERROR"));
00845 mapStatusSeverity.insert(std::make_pair(ECA_BADMONID, "ERROR"));
00846 mapStatusSeverity.insert(std::make_pair(ECA_BADMASK, "ERROR"));
00847 mapStatusSeverity.insert(std::make_pair(ECA_IODONE , "INFO"));
00848 mapStatusSeverity.insert(std::make_pair(ECA_IOINPROGRESS, "INFO"));
00849 mapStatusSeverity.insert(std::make_pair(ECA_BADSYNCGRP, "ERROR"));
00850 mapStatusSeverity.insert(std::make_pair(ECA_PUTCBINPROG, "ERROR"));
00851 mapStatusSeverity.insert(std::make_pair(ECA_NORDACCESS, "WARN"));
00852 mapStatusSeverity.insert(std::make_pair(ECA_NOWTACCESS, "WARN"));
00853 mapStatusSeverity.insert(std::make_pair(ECA_ANACHRONISM, "ERROR"));
00854 mapStatusSeverity.insert(std::make_pair(ECA_NOSEARCHADDR, "WARN"));
00855 mapStatusSeverity.insert(std::make_pair(ECA_NOCONVERT, "WARN"));
00856 mapStatusSeverity.insert(std::make_pair(ECA_BADCHID, "ERROR"));
00857 mapStatusSeverity.insert(std::make_pair(ECA_BADFUNCPTR, "ERROR"));
00858 mapStatusSeverity.insert(std::make_pair(ECA_ISATTACHED, "WARN"));
00859 mapStatusSeverity.insert(std::make_pair(ECA_UNAVAILINSERV, "WARN"));
00860 mapStatusSeverity.insert(std::make_pair(ECA_CHANDESTROY, "WARN"));
00861 mapStatusSeverity.insert(std::make_pair(ECA_BADPRIORITY, "ERROR"));
00862 mapStatusSeverity.insert(std::make_pair(ECA_NOTTHREADED, "ERROR"));
00863 mapStatusSeverity.insert(std::make_pair(ECA_16KARRAYCLIENT,"WARN"));
00864 mapStatusSeverity.insert(std::make_pair(ECA_CONNSEQTMO, "WARN"));
00865 mapStatusSeverity.insert(std::make_pair(ECA_UNRESPTMO , "WARN"));
00866 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CS_NEVER_CONN, "WARN" ));
00867 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CS_PREV_CONN, "INFO" ));
00868 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CS_CONN, "INFO" ));
00869 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CS_CLOSED, "INFO" ));
00870 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CS_DISCONN, "WARN" ));
00871 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CS_UNKNOWN, "ERROR" ));
00872
00873 mapStatusSeverity.insert(std::make_pair((int) ICAFE_TYPENOTCONN, "WARN"));
00874 mapStatusSeverity.insert(std::make_pair((int) ICAFE_RULE_FALSE, "INFO"));
00875 mapStatusSeverity.insert(std::make_pair((int) ICAFE_BADCOUNT, "WARN"));
00876 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CALLBACK_NOT_YET_INVOKED, "WARN"));
00877 mapStatusSeverity.insert(std::make_pair((int) ICAFE_WAITING_FOR_PREV_CALLBACK, "WARN"));
00878 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CACHE_EMPTY, "WARN"));
00879 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT, "WARN"));
00880 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CA_OP_CONN_UP, "INFO" ));
00881 mapStatusSeverity.insert(std::make_pair((int) ICAFE_CA_OP_CONN_DOWN, "WARN" ));
00882
00883 mapStatusSeverity.insert(std::make_pair((int) ICAFE_MONITOR_DELAYED_AS_CONN_DOWN, "WARN"));
00884 mapStatusSeverity.insert(std::make_pair((int) ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE, "INFO"));
00885
00886 mapStatusSeverity.insert(std::make_pair((int) ICAFE_SET_AND_GET_MISMATCH, "WARN"));
00887
00888 mapStatusSeverity.insert(std::make_pair((int) ECAFE_NODATA, "WARN"));
00889 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BADCOUNT, "WARN"));
00890 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BADSTR, "ERROR"));
00891 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BADTYPE, "ERROR"));
00892
00893 mapStatusSeverity.insert(std::make_pair((int) ECAFE_NO_CONVERT, "WARN"));
00894 mapStatusSeverity.insert(std::make_pair((int) ECAFE_NULLCONTEXT, "ERROR"));
00895 mapStatusSeverity.insert(std::make_pair((int) ECAFE_NULLCHID, "ERROR"));
00896 mapStatusSeverity.insert(std::make_pair((int) ECAFE_NULLEVID, "ERROR"));
00897 mapStatusSeverity.insert(std::make_pair((int) ECAFE_UNKNOWN_COLLECTION, "ERROR"));
00898 mapStatusSeverity.insert(std::make_pair((int) ECAFE_EMPTY_COLLECTION, "ERROR"));
00899 mapStatusSeverity.insert(std::make_pair((int) ECAFE_COLLECTION_PREV_DEF, "ERROR"));
00900 mapStatusSeverity.insert(std::make_pair((int) ECAFE_COLLECTION_INVALID_MEMBER, "ERROR"));
00901 mapStatusSeverity.insert(std::make_pair((int) ECAFE_RULE_FALSE, "WARN"));
00902 mapStatusSeverity.insert(std::make_pair((int) ECAFE_UNKNOWN_GROUP, "ERROR"));
00903 mapStatusSeverity.insert(std::make_pair((int) ECAFE_EMPTY_GROUP, "ERROR"));
00904 mapStatusSeverity.insert(std::make_pair((int) ECAFE_GROUP_PREV_DEF, "ERROR"));
00905 mapStatusSeverity.insert(std::make_pair((int) ECAFE_INVALID_HANDLE, "ERROR"));
00906 mapStatusSeverity.insert(std::make_pair((int) ECAFE_INVALID_GROUP_HANDLE, "ERROR"));
00907 mapStatusSeverity.insert(std::make_pair((int) ECAFE_NORDACCESS, "WARN"));
00908 mapStatusSeverity.insert(std::make_pair((int) ECAFE_NOWTACCESS, "WARN"));
00909 mapStatusSeverity.insert(std::make_pair((int) ECAFE_TIMEOUT, "WARN"));
00910
00911
00912 mapStatusSeverity.insert(std::make_pair((int) ECAFE_CANNOT_OPEN_FILE, "ERROR"));
00913 mapStatusSeverity.insert(std::make_pair((int) ECAFE_INVALID_SWITCH_CASE, "ERROR"));
00914 mapStatusSeverity.insert(std::make_pair((int) ECAFE_PVALIAS_INVALID, "ERROR"));
00915 mapStatusSeverity.insert(std::make_pair((int) ECAFE_PVALIAS_PREV_DEF, "ERROR"));
00916 mapStatusSeverity.insert(std::make_pair((int) ECAFE_PVNAME_PREV_DEF_AS_PVALIAS,"ERROR"));
00917 mapStatusSeverity.insert(std::make_pair((int) ECAFE_DEVICE_ATTRIB_NOT_FOUND,"ERROR"));
00918 mapStatusSeverity.insert(std::make_pair((int) ECAFE_HASH_UNIQUEID_EXISTS, "ERROR"));
00919 mapStatusSeverity.insert(std::make_pair((int) ECAFE_WRONG_CA_CONTEXT, "ERROR"));
00920 mapStatusSeverity.insert(std::make_pair((int) ECAFE_INVALID_CAFENUM_POLICY_TYPE, "ERROR"));
00921 mapStatusSeverity.insert(std::make_pair((int) ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED, "ERROR"));
00922 mapStatusSeverity.insert(std::make_pair((int) ECAFE_INVALID_ENUM_INDEX, "ERROR"));
00923 mapStatusSeverity.insert(std::make_pair((int) ECAFE_PVGROUP_GROUPHANDLE_MISMATCH, "ERROR"));
00924
00925 mapStatusSeverity.insert(std::make_pair((int) ECAFE_TIMEOUT_SET_AND_MATCH, "WARN"));
00926 mapStatusSeverity.insert(std::make_pair((int) ECAFE_HANDLE_MISMATCH_SET_AND_MATCH, "ERROR"));
00927 mapStatusSeverity.insert(std::make_pair((int) ECAFE_INCONSISTENT_CONTAINER_CORRECTED, "WARN"));
00928
00929 mapStatusSeverity.insert(std::make_pair((int) ECAFE_LOAD_COLLECTION, "ERROR"));
00930 mapStatusSeverity.insert(std::make_pair((int) ECAFE_LOAD_GROUP, "ERROR"));
00931
00932 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BPM_DATA_IS_INVALID, "WARN" ));
00933 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BITSHUFF_DECOMPRESS, "ERROR"));
00934 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BITSHUFF_ALLOCMEM, "ERROR" ));
00935 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BITSHUFF_REALLOCMEM, "WARN" ));
00936 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BITSHUFF_BADCOUNT, "ERROR" ));
00937
00938 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BSREAD_MULTIPART_MESS_NODATA, "WARN" ));
00939 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BSREAD_PARSEFAIL_MAINHEADER, "ERROR"));
00940 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BSREAD_PARSEFAIL_DATAHEADER, "ERROR"));
00941 mapStatusSeverity.insert(std::make_pair((int) ECAFE_BSREAD_ZMQSTREAM_NULL, "WARN"));
00942
00943 mapStatusSeverity.insert(std::make_pair((int) ERRNO_EINTR, "ERROR"));
00944 mapStatusSeverity.insert(std::make_pair((int) ERRNO_EAGAIN, "WARN" ));
00945 mapStatusSeverity.insert(std::make_pair((int) ERRNO_EFAULT, "ERROR"));
00946 mapStatusSeverity.insert(std::make_pair((int) ERRNO_EINVAL, "ERROR" ));
00947 mapStatusSeverity.insert(std::make_pair((int) ERRNO_ENOTSOCK, "ERROR"));
00948 mapStatusSeverity.insert(std::make_pair((int) ERRNO_EPROTONOSUPPORT, "ERROR" ));
00949
00950 };
00951
00952 ~CAFEStatusSeverity() {};
00953
00954 std::string message (int i) {
00955 pos = mapStatusSeverity.find(i);
00956 if (pos != mapStatusSeverity.end()) {
00957 return pos->second;
00958 }
00959
00960 std::ostringstream oss;
00961 oss << "INVALID ERROR CODE: " << i ;
00962
00963
00964 return oss.str();
00965 };
00966
00967 int enumIs (std::string message) {
00968 for (pos=mapStatusSeverity.begin(); pos != mapStatusSeverity.end(); ++pos) {
00969
00970 if (pos->second==message) return pos->first;
00971
00972 else if ( (pos->second).find(message) != std::string::npos) return pos->first;
00973 }
00974 return -1;
00975 };
00976
00977 void printAll() {
00978 std::cout << "-------------------" << std::endl;
00979 std::cout << "CAFE STATUS SEVERITY LIST" << std::endl;
00980 std::cout << "-------------------" << std::endl;
00981 for (pos=mapStatusSeverity.begin(); pos != mapStatusSeverity.end(); ++pos) {
00982 std::cout << pos->first << " " << pos->second << std::endl;
00983 }
00984 std::cout << "------------------" << std::endl;
00985 };
00986
00987 };
00988
00989
00990
00991
00992
00993
00994
00995
00996
00997 class CAFEStatus {
00998
00999 public:
01000 CAFEStatusSeverity css;
01001 CAFEStatusInfo csi;
01002 CAFEStatusCode csc;
01003 CAFEStatus() {};
01004
01005 std::string severity(int i) {
01006 return (std::string) css.message(i);
01007 }
01008
01009 std::string asString(int i) {
01010 return (std::string) csc.msgIDAsString(i);
01011 }
01012
01013 std::string msgID(int i) {
01014 return (std::string) csc.msgIDAsString(i);
01015 }
01016
01017 std::string code(int i) {
01018 return (std::string) csc.message(i);
01019 }
01020
01021 std::string info(int i) {
01022 return (std::string) csi.message(i);
01023 }
01024
01025 std::string message(int i) {
01026 std::string strRet="";
01027 strRet.append(csc.message(i));
01028 strRet.append(" ");
01029 strRet.append(csi.message(i));
01030 return (std::string) strRet;
01031 }
01032
01033 bool isTimeout(int i) {
01034 return csc.isTimeout(i);
01035 }
01036
01037 void report (int i) {
01038
01039
01040 std::cout << "------------------------------------" << std::endl;
01041 std::cout << csc.message(i) << std::endl;
01042 std::cout << csi.message(i) << std::endl;
01043 std::cout << "------------------------------------" << std::endl;
01044 };
01045 };
01046
01047 #endif // STATUSCODES_H