statusCodes.h

Go to the documentation of this file.
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; // ca_field_type
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 //1100
00118 enum CAFE_FILE_ERROR  { ECAFE_LOAD_COLLECTION=ICAFE_FILE_ERROR,
00119                         ECAFE_LOAD_GROUP
00120                       };
00121 
00122 //1200
00123 enum CAFE_SERVICE_ERROR { ECAFE_BPM_DATA_IS_INVALID=ICAFE_SERVICE_ERROR
00124                       };
00125 //1300
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 //5000
00139 //Used by zeromq
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 //epicsAlarmConditionStrings = {"NO_ALARM","READ","WRITE","HIHI","HIGH",
00150 //"LOLO","LOW","STATE","COS", "COMM","TIMEOUT","HWLIMIT","CALC","SCAN","LINK",
00151 //"SOFT","BAD_SUB","UDF","DISABLE","SIMM","READ_ACCESS", "WRITE_ACCESS"};
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 ; //<< --std::endl;
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                 // String searches such as s.find(s1) return string::npos on failure
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 ; //<< std::endl;
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                 // String searches such as s.find(s1) return string::npos on failure
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 /* class StatusInfo provides information for user defined error/status codes
00349 * and ca defined error/status codes \n
00350 *    1 ECA_NORMAL \n
00351 *   48 ECA_ALLOCMEM \n
00352 *   72 ECA_TOLARGE \n
00353 *   80 ECA_TIMEOUT \n
00354 *  114 ECA_BADTYPE \n
00355 *  142 ECA_INTERNAL \n
00356 *  152 ECA_GETFAIL \n
00357 *  160 ECA_PUTFAIL \n
00358 *  176 ECA_BADCOUNT \n
00359 *  186 ECA_BADSTR \n
00360 *  192 ECA_DISCONN \n
00361 *  200 ECA_DBLCHNL \n
00362 *  210 ECA_EVDISALLOW \n
00363 *  242 ECA_BADMONID \n
00364 *  330 ECA_BADMASK \n
00365 *  339 ECA_IODONE \n
00366 *  347 ECA_IOINPROGRESS \n
00367 *  354 ECA_BADSYNCGRP \n
00368 *  362 ECA_PUTCBINPROG \n
00369 *  368 ECA_NORDACCESS \n
00370 *  376 ECA_NOWTACCESS \n
00371 *  386 ECA_ANACHRONISM \n
00372 *  392 ECA_NOSEARCHADDR \n
00373 *  400 ECA_NOCONVERT \n
00374 *  410 ECA_BADCHID \n
00375 *  418 ECA_BADFUNCPTR \n
00376 *  424 ECA_ISATTACHED \n
00377 *  432 ECA_UNAVAILINSERV \n
00378 *  440 ECA_CHANDESTROY \n
00379 *  450 ECA_BADPRIORITY \n
00380 *  458 ECA_NOTTHREADED \n
00381 *  464 ECA_16KARRAYCLIENT \n
00382 *  472 ECA_CONNSEQTMO \n
00383 *  480 ECA_UNRESPTMO \n
00384 *  600 ICAFE_CS_NEVER_CONN \n
00385 *  601 ICAFE_CS_PREV_CONN \n
00386 *  602 ICAFE_CS_CONN \n
00387 *  603 ICAFE_CS_CLOSED \n
00388 *  604 ICAFE_CS_DISCONN, \n
00389 *  605 ICAFE_CS_UNKNOWN \n
00390 *  700 ICAFE_TYPENOTCONN \n
00391 *  701 ICAFE_RULE_FALSE \n
00392 *  702 ICAFE_BADCOUNT \n
00393 *  703 ICAFE_CALLBACK_NOT_YET_INVOKED \n
00394 *  704 ICAFE_WAITING_FOR_PREV_CALLBACK \n
00395 *  705 ICAFE_CACHE_EMPTY \n
00396 *  706 ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT \n
00397 *  707 ICAFE_MONITOR_DELAYED_AS_CONN_DOWN \n
00398 *  708 ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE \n
00399 *  709 ICAFE_SET_AND_GET_MISMATCH \n
00400 *  806 ICAFE_CA_OP_CONN_UP \n
00401 *  807 ICAFE_CA_OP_CONN_DOWN \n
00402 * 1000 ECAFE_NODATA \n
00403 * 1001 ECAFE_INVALID_TYPE \n
00404 * 1002 ECAFE_BADCOUNT \n
00405 * 1003 ECAFE_BADSTR \n
00406 * 1004 ECAFE_BADTYPE \n
00407 * 1005 ECAFE_NO_CONVERT \n
00408 * 1006 ECAFE_NULLCONTEXT \n
00409 * 1007 ECAFE_NULLCHID \n
00410 * 1008 ECAFE_NULLEVID \n
00411 * 1009 ECAFE_UNKNOWN_COLLECTION \n
00412 * 1010 ECAFE_EMPTY_COLLECTION \n
00413 * 1011 ECAFE_COLLECTION_PREV_DEF \n
00414 * 1012 ECAFE_COLLECTION_INVALID_MEMBER \n
00415 * 1013 ECAFE_RULE_FALSE \n
00416 * 1014 ECAFE_UNKNOWN_GROUP \n
00417 * 1015 ECAFE_EMPTY_GROUP \n
00418 * 1016 ECAFE_GROUP_PREV_DEF \n
00419 * 1017 ECAFE_INVALID_HANDLE \n
00420 * 1018 ECAFE_INVALID_GROUP_HANDLE \n
00421 * 1019 ECAFE_NORDACCESS \n
00422 * 1020 ECAFE_NOWTACCESS \n
00423 * 1021 ECAFE_TIMEOUT \n
00424 * 1022 ECAFE_CANNOT_OPEN_FILE \n
00425 * 1023 ECAFE_INVALID_SWITCH_CASE \n
00426 * 1024 ECAFE_PVALIAS_INVALID \n
00427 * 1025 ECAFE_PVALIAS_PREV_DEF \n
00428 * 1026 ECAFE_PVNAME_PREV_DEF_AS_PVALIAS \n
00429 * 1027 ECAFE_DEVICE_ATTRIB_NOT_FOUND \n
00430 * 1028 ECAFE_HASH_UNIQUEID_EXISTS \n
00431 * 1029 ECAFE_WRONG_CA_CONTEXT \n
00432 * 1030 ECAFE_INVALID_CAFENUM_POLICY_TYPE \n
00433 * 1031 ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED \n
00434 * 1032 ECAFE_INVALID_ENUM_INDEX \n
00435 * 1033 ECAFE_PVGROUP_GROUPHANDLE_MISMATCH \n
00436 * 1034 ECAFE_TIMEOUT_SET_AND_MATCH \n
00437 * 1035 ECAFE_HANDLE_MISMATCH_SET_AND_MATCH \n
00438 * 1036 ECAFE_INCONSISTENT_CONTAINER_CORRECTED \n
00439 * 1100 ECAFE_LOAD_COLLECTION \n
00440 * 1101 ECAFE_LOAD_GROUP \n
00441 * 1200 ECAFE_BPM_DATA_IS_INVALID \n
00442 * 1300 ECAFE_BITSHUFF_DECOMPRESS \n
00443 * 1301 ECAFE_BITSHUFF_ALLOCMEM \n
00444 * 1302 ECAFE_BITSHUFF_REALLOCMEM \n
00445 * 1302 ECAFE_BITSHUFF_BADCOUNT \n
00446 * 1500 ECAFE_BSREAD_MULTIPART_MESS_NODATA \n
00447 * 1501 ECAFE_BSREAD_PARSEFAIL_MAINHEADER \n
00448 * 1502 ECAFE_BSREAD_PARSEFAIL_DATAHEADER \n
00449 * 1503 ECAFE_BSREAD_ZMQSTREAM_NULL \n
00450 * 5004 ERRNO_EINTR \n
00451 * 5011 ERRNO_EGAIN \n
00452 * 5014 ERRNO_EFAULT \n
00453 * 5022 ERRNO_EINVAL Invalid argument \n
00454 * 5088 ERRNO_ENOTSOCK \n
00455 * 5093 ERRNO_EPROTONOSUPPORT \n
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     //maximum message length is 80 characters
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 ; //<< std::endl;
00581     //std::cout << oss.str();
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 ; //<< std::endl;
00745     //std::cout << oss.str();
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 ; //<< std::endl;
00786     //std::cout << oss.str();
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       // String searches such as s.find(s1) return string::npos on failure
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 ; //<< std::endl;
00962     //std::cout << oss.str();
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       // String searches such as s.find(s1) return string::npos on failure
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 //Example
00990 //For statusCode=0, we have
00991 //severity: INFO
00992 //asString: ECA_NORMAL or ICAFE_NORMAL as from Feb. 2018) 
00993 //msgID:    ECA_NORMAL 
00994 //code:     SUCCESS: ECA_NORMAL
00995 //info:     Normal successful completion
00996 //message:  SUCCESS: ECA_NORMAL Normal successful completion
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         //std::cout << "------------------" << std::endl;
01039         //std::cout << "CAFE STATUS REPORT" << std::endl;
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

Generated on 28 May 2018 for CAFE by  doxygen 1.6.1