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 #ifndef STATUSCODES_H
00020 #define STATUSCODES_H
00021 #include <cadef.h>
00022 #include <map>
00023 #include <iostream>
00024 #include <sstream>
00025 
00026 #include <cafeDataType.h>
00027 
00028 
00029 const unsigned short ICAFE_STATUS_BASE  =  600;
00030 const unsigned short ICAFE_STATUS_CS    = ICAFE_STATUS_BASE;
00031 const unsigned short ICAFE_STATUS_CFT   =  700; // ca_field_type
00032 const unsigned short ICAFE_STATUS_CA_OP =  800;
00033 const unsigned short ICAFE_STATUS_ERROR = 1000;
00034 const unsigned short ICAFE_FILE_ERROR   = 1100;
00035 const unsigned short ICAFE_SUCCESS      = ECA_NORMAL;
00036 const unsigned short ICAFE_NORMAL       = ECA_NORMAL;
00037 
00038 
00039 
00040 enum CAFE_CS_STATE {    ICAFE_CS_NEVER_CONN=ICAFE_STATUS_CS,
00041                         ICAFE_CS_PREV_CONN,
00042                         ICAFE_CS_CONN,
00043                         ICAFE_CS_CLOSED,
00044                                                                                                 ICAFE_CS_DISCONN,
00045                         ICAFE_CS_UNKNOWN
00046                    };
00047                                                                          
00048 enum CAFE_CFT_STATE{    ICAFE_TYPENOTCONN=ICAFE_STATUS_CFT,
00049                         ICAFE_RULE_FALSE,
00050                         ICAFE_BADCOUNT,
00051                         ICAFE_CALLBACK_NOT_YET_INVOKED,
00052                         ICAFE_WAITING_FOR_PREV_CALLBACK,
00053                         ICAFE_CACHE_EMPTY,
00054                         ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT,
00055                                                                                                 ICAFE_MONITOR_DELAYED_AS_CONN_DOWN,
00056                                                                                                 ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE,
00057                                                                                                 ICAFE_SET_AND_GET_MISMATCH
00058                    };
00059 
00060 enum CAFE_CC_STATE {    ICAFE_CA_OP_GET=ICAFE_STATUS_CA_OP,
00061                         ICAFE_CA_OP_PUT,
00062                         ICAFE_CA_OP_CREATE_CHANNEL,
00063                         ICAFE_CA_OP_ADD_EVENT,
00064                         ICAFE_CA_OP_CLEAR_EVENT,
00065                         ICAFE_CA_OP_OTHER,
00066                         ICAFE_CA_OP_CONN_UP,
00067                         ICAFE_CA_OP_CONN_DOWN
00068                    };
00069 
00070 enum CAFE_ERROR_STATE { ECAFE_NODATA=ICAFE_STATUS_ERROR,
00071                         ECAFE_INVALID_TYPE,
00072                         ECAFE_BADCOUNT,
00073                         ECAFE_BADSTR,
00074                         ECAFE_BADTYPE,
00075                         ECAFE_NO_CONVERT,
00076                         ECAFE_NULLCONTEXT,
00077                         ECAFE_NULLCHID,
00078                         ECAFE_NULLEVID,
00079                         ECAFE_UNKNOWN_COLLECTION,
00080                         ECAFE_EMPTY_COLLECTION,
00081                         ECAFE_COLLECTION_PREV_DEF,
00082                         ECAFE_COLLECTION_INVALID_MEMBER,
00083                         ECAFE_RULE_FALSE,
00084                         ECAFE_UNKNOWN_GROUP,
00085                         ECAFE_EMPTY_GROUP,
00086                         ECAFE_GROUP_PREV_DEF,
00087                         ECAFE_INVALID_HANDLE,
00088                         ECAFE_INVALID_GROUP_HANDLE,
00089                         ECAFE_NORDACCESS,
00090                         ECAFE_NOWTACCESS,
00091                         ECAFE_TIMEOUT,
00092                         ECAFE_CANNOT_OPEN_FILE,
00093                         ECAFE_INVALID_SWITCH_CASE,
00094                         ECAFE_PVALIAS_PREV_DEF,
00095                         ECAFE_PVALIAS_INVALID,
00096                         ECAFE_PVNAME_PREV_DEF_AS_PVALIAS,
00097                         ECAFE_DEVICE_ATTRIB_NOT_FOUND,
00098                         ECAFE_HASH_UNIQUEID_EXISTS,
00099                         ECAFE_WRONG_CA_CONTEXT,
00100                         ECAFE_INVALID_CAFENUM_POLICY_TYPE,
00101                         ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED,
00102                         ECAFE_INVALID_ENUM_INDEX,
00103                         ECAFE_PVGROUP_GROUPHANDLE_MISMATCH,
00104                         ECAFE_TIMEOUT_SET_AND_MATCH,
00105                                                                                                 ECAFE_HANDLE_MISMATCH_SET_AND_MATCH
00106                     };
00107 
00108 enum CAFE_FILE_ERROR  { ECAFE_LOAD_COLLECTION=ICAFE_FILE_ERROR,
00109                         ECAFE_LOAD_GROUP
00110                       };
00111 
00112 
00113 /* class StatusInfo provides information for user defined error/status codes
00114 * and ca defined error/status codes \n
00115 *    1 ECA_NORMAL \n
00116 *   48 ECA_ALLOCMEM \n
00117 *   72 ECA_TOLARGE \n
00118 *   80 ECA_TIMEOUT \n
00119 *  114 ECA_BADTYPE \n
00120 *  142 ECA_INTERNAL \n
00121 *  152 ECA_GETFAIL \n
00122 *  160 ECA_PUTFAIL \n
00123 *  176 ECA_BADCOUNT \n
00124 *  186 ECA_BADSTR \n
00125 *  192 ECA_DISCONN \n
00126 *  200 ECA_DBLCHNL \n
00127 *  210 ECA_EVDISALLOW \n
00128 *  242 ECA_BADMONID \n
00129 *  330 ECA_BADMASK \n
00130 *  339 ECA_IODONE \n
00131 *  347 ECA_IOINPROGRESS \n
00132 *  354 ECA_BADSYNCGRP \n
00133 *  362 ECA_PUTCBINPROG \n
00134 *  368 ECA_NORDACCESS \n
00135 *  376 ECA_NOWTACCESS \n
00136 *  386 ECA_ANACHRONISM \n
00137 *  392 ECA_NOSEARCHADDR \n
00138 *  400 ECA_NOCONVERT \n
00139 *  410 ECA_BADCHID \n
00140 *  418 ECA_BADFUNCPTR \n
00141 *  424 ECA_ISATTACHED \n
00142 *  432 ECA_UNAVAILINSERV \n
00143 *  440 ECA_CHANDESTROY \n
00144 *  450 ECA_BADPRIORITY \n
00145 *  458 ECA_NOTTHREADED \n
00146 *  464 ECA_16KARRAYCLIENT \n
00147 *  472 ECA_CONNSEQTMO \n
00148 *  480 ECA_UNRESPTMO \n
00149 *  600 ICAFE_CS_NEVER_CONN \n
00150 *  601 ICAFE_CS_PREV_CONN \n
00151 *  602 ICAFE_CS_CONN \n
00152 *  603 ICAFE_CS_CLOSED \n
00153 *  604 ICAFE_CS_DISCONN, \n
00154 *  605 ICAFE_CS_UNKNOWN \n
00155 *  700 ICAFE_TYPENOTCONN \n
00156 *  701 ICAFE_RULE_FALSE \n
00157 *  702 ICAFE_BADCOUNT \n
00158 *  703 ICAFE_CALLBACK_NOT_YET_INVOKED \n
00159 *  704 ICAFE_WAITING_FOR_PREV_CALLBACK \n
00160 *  705 ICAFE_CACHE_EMPTY \n
00161 *  706 ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT \n
00162 *  707 ICAFE_MONITOR_DELAYED_AS_CONN_DOWN \n
00163 *  708 ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE \n
00164 *  709 ICAFE_SET_AND_GET_MISMATCH \n
00165 *  806 ICAFE_CA_OP_CONN_UP \n
00166 *  807 ICAFE_CA_OP_CONN_DOWN \n
00167 * 1000 ECAFE_NODATA \n
00168 * 1001 ECAFE_INVALID_TYPE \n
00169 * 1002 ECAFE_BADCOUNT \n
00170 * 1003 ECAFE_BADSTR \n
00171 * 1004 ECAFE_BADTYPE \n
00172 * 1005 ECAFE_NO_CONVERT \n
00173 * 1006 ECAFE_NULLCONTEXT \n
00174 * 1007 ECAFE_NULLCHID \n
00175 * 1008 ECAFE_NULLEVID \n
00176 * 1009 ECAFE_UNKNOWN_COLLECTION \n
00177 * 1010 ECAFE_EMPTY_COLLECTION \n
00178 * 1011 ECAFE_COLLECTION_PREV_DEF \n
00179 * 1012 ECAFE_COLLECTION_INVALID_MEMBER \n
00180 * 1013 ECAFE_RULE_FALSE \n
00181 * 1014 ECAFE_UNKNOWN_GROUP \n
00182 * 1015 ECAFE_EMPTY_GROUP \n
00183 * 1016 ECAFE_GROUP_PREV_DEF \n
00184 * 1017 ECAFE_INVALID_HANDLE \n
00185 * 1018 ECAFE_INVALID_GROUP_HANDLE \n
00186 * 1019 ECAFE_NORDACCESS \n
00187 * 1020 ECAFE_NOWTACCESS \n
00188 * 1021 ECAFE_TIMEOUT \n
00189 * 1022 ECAFE_CANNOT_OPEN_FILE \n
00190 * 1023 ECAFE_INVALID_SWITCH_CASE \n
00191 * 1024 ECAFE_PVALIAS_INVALID \n
00192 * 1025 ECAFE_PVALIAS_PREV_DEF \n
00193 * 1026 ECAFE_PVNAME_PREV_DEF_AS_PVALIAS \n
00194 * 1027 ECAFE_DEVICE_ATTRIB_NOT_FOUND \n
00195 * 1028 ECAFE_HASH_UNIQUEID_EXISTS \n
00196 * 1029 ECAFE_WRONG_CA_CONTEXT \n
00197 * 1030 ECAFE_INVALID_CAFENUM_POLICY_TYPE \n
00198 * 1031 ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED \n
00199 * 1032 ECAFE_INVALID_ENUM_INDEX \n
00200 * 1033 ECAFE_PVGROUP_GROUPHANDLE_MISMATCH \n
00201 * 1034 ECAFE_TIMEOUT_SET_AND_MATCH \n
00202 * 1035 ECAFE_HANDLE_MISMATCH_SET_AND_MATCH \n
00203 * 1100 ECAFE_LOAD_COLLECTION \n
00204 * 1101 ECAFE_LOAD_GROUP \n
00205 *
00206 */
00207 class CAFEStatusInfo {
00208     typedef std::map<int, std::string> mapLongString;
00209 private:  
00210     mapLongString mapStatusInfo;
00211     mapLongString::iterator posStatusInfo;
00212 
00213 public:
00214     CAFEStatusInfo() {
00215     //maximum message length is 80 characters
00216 
00217     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CA_OP_CONN_UP,     "Status of channel connection: channel UP " ));
00218     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CA_OP_CONN_DOWN,   "Status of channel connection: channel DOWN! " ));
00219     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CS_NEVER_CONN,     "Valid chid; server not found or unavailable " ));
00220     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CS_PREV_CONN,      "Valid chid; previously connected to server " ));
00221     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CS_CONN,           "Valid chid; connected to server " ));
00222     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CS_CLOSED,         "Channel deleted by user " ));
00223     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CS_DISCONN,        "Channel disconnected " ));
00224     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CS_UNKNOWN,        "Unknown state!!! " ));
00225     mapStatusInfo.insert(std::make_pair((int)  ICAFE_TYPENOTCONN,       "ca_field_type() channel is disconnected " ));
00226     mapStatusInfo.insert(std::make_pair((int)  ICAFE_RULE_FALSE,        "CAFE collection rule for channel set to false by user " ));
00227     mapStatusInfo.insert(std::make_pair((int)  ICAFE_BADCOUNT,          "nelemClient exceeds nelemNative (max. allowed)! Set nelemClient/nelemRequest to nelemNative "));
00228     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CALLBACK_NOT_YET_INVOKED,  "Callback for get/set operation has not yet been invoked "));
00229     mapStatusInfo.insert(std::make_pair((int)  ICAFE_WAITING_FOR_PREV_CALLBACK, "Callback for previous get/set operation not yet invoked "));
00230     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CACHE_EMPTY,        "Data buffer is empty; get message to IOC not yet invoked"));
00231     mapStatusInfo.insert(std::make_pair((int)  ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT, "User supplied callback function not provided when expected "));
00232 
00233     mapStatusInfo.insert(std::make_pair((int)  ICAFE_MONITOR_DELAYED_AS_CONN_DOWN, "Channel disconnected. Monitor will be started on connection "));
00234           mapStatusInfo.insert(std::make_pair((int)  ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE, "Handle has monitor, hence data retrieved from cache "));
00235 
00236     mapStatusInfo.insert(std::make_pair((int)  ICAFE_SET_AND_GET_MISMATCH, "Set and Get values from SetAndGetMethod do not match"));   
00237 
00238 
00239     mapStatusInfo.insert(std::make_pair((int)  ECAFE_NODATA,            "Requested data transfer is of zero length! " ));
00240     mapStatusInfo.insert(std::make_pair((int)  ECAFE_INVALID_TYPE,      "Invalid data type! " ));
00241     mapStatusInfo.insert(std::make_pair((int)  ECAFE_BADCOUNT,          "nelemClient exceeds nelemNative (max. allowed)! Set nelemClient/nelemRequest to nelemNative "));
00242     mapStatusInfo.insert(std::make_pair((int)  ECAFE_BADSTR,            "Empty string for process variable name! " ));
00243     mapStatusInfo.insert(std::make_pair((int)  ECAFE_BADTYPE,           "Invalid datatype! " ));
00244     mapStatusInfo.insert(std::make_pair((int)  ECAFE_NO_CONVERT,        "set()/get() cannot convert to/from native datatype! " ));
00245 
00246     mapStatusInfo.insert(std::make_pair((int)  ECAFE_NULLCONTEXT,  "Error: current context is null; CA not initialized. " ));
00247     mapStatusInfo.insert(std::make_pair((int)  ECAFE_NULLCHID,     "Error: chid is null!!  " ));
00248 
00249     mapStatusInfo.insert(std::make_pair((int)  ECAFE_NULLEVID,                 "Monitor() evid is null! " ));
00250     mapStatusInfo.insert(std::make_pair((int)  ECAFE_UNKNOWN_COLLECTION,       "CAFE collection is unknown/unregistered or invalid! " ));
00251     mapStatusInfo.insert(std::make_pair((int)  ECAFE_EMPTY_COLLECTION,         "CAFE collection is empty; has no members! " ));
00252     mapStatusInfo.insert(std::make_pair((int)  ECAFE_COLLECTION_PREV_DEF,      "CAFE collection with this name already exists! " ));
00253     mapStatusInfo.insert(std::make_pair((int)  ECAFE_COLLECTION_INVALID_MEMBER,"Device is not a member of the CAFE collection! " ));
00254 
00255     mapStatusInfo.insert(std::make_pair((int)  ECAFE_RULE_FALSE,          "CAFE rule for channel set to false by user " ));
00256     
00257     mapStatusInfo.insert(std::make_pair((int)  ECAFE_UNKNOWN_GROUP,  "CAFE group is unknown/unregistered or invalid! " ));
00258     mapStatusInfo.insert(std::make_pair((int)  ECAFE_EMPTY_GROUP,    "CAFE group is empty; has no members! " ));
00259     mapStatusInfo.insert(std::make_pair((int)  ECAFE_GROUP_PREV_DEF, "CAFE group with this name already exists! " ));
00260     
00261     mapStatusInfo.insert(std::make_pair((int)  ECAFE_INVALID_HANDLE,  "Handle does not exist! " ));
00262     mapStatusInfo.insert(std::make_pair((int)  ECAFE_INVALID_GROUP_HANDLE,  "Group handle does not exist! " ));
00263     
00264     mapStatusInfo.insert(std::make_pair((int)  ECAFE_NORDACCESS,  "Channel does not have READ access!  " ));
00265     mapStatusInfo.insert(std::make_pair((int)  ECAFE_NOWTACCESS,  "Channel does not have WRITE access! " ));
00266     mapStatusInfo.insert(std::make_pair((int)  ECAFE_TIMEOUT,     "Callback function not activated within specified timeout period " ));
00267     
00268     mapStatusInfo.insert(std::make_pair((int)  ECAFE_CANNOT_OPEN_FILE,          "Cannot open file! " ));
00269     
00270     mapStatusInfo.insert(std::make_pair((int)  ECAFE_INVALID_SWITCH_CASE, "Internal CAFE Error: Invalid option for switch case " ));
00271 
00272     mapStatusInfo.insert(std::make_pair((int)  ECAFE_PVALIAS_INVALID,     "Requested PVAlias is another handle's PV name. Bizarre! " ));
00273     mapStatusInfo.insert(std::make_pair((int)  ECAFE_PVALIAS_PREV_DEF,    "Requested PVAlias already exists! " ));
00274     mapStatusInfo.insert(std::make_pair((int)  ECAFE_PVNAME_PREV_DEF_AS_PVALIAS, "PVName clashes with previously defined PVAlias!" ));
00275 
00276     mapStatusInfo.insert(std::make_pair((int)  ECAFE_DEVICE_ATTRIB_NOT_FOUND, "Deliminator - hence dev/attrib - not found in PV name" ));
00277 
00278     mapStatusInfo.insert(std::make_pair((int)  ECAFE_HASH_UNIQUEID_EXISTS,"cafeConduit object already inserted (handle exists) "));
00279     mapStatusInfo.insert(std::make_pair((int)  ECAFE_WRONG_CA_CONTEXT,"Operation cannot be carried out for this ca_client_context "));
00280     mapStatusInfo.insert(std::make_pair((int)  ECAFE_INVALID_CAFENUM_POLICY_TYPE, "Not a valid CAFENUM type for this policy. See policies.h "));
00281     mapStatusInfo.insert(std::make_pair((int)  ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED, "See define.sh to change the allowed maximum "));
00282 
00283     mapStatusInfo.insert(std::make_pair((int)  ECAFE_INVALID_ENUM_INDEX, "DBR_ENUM value exceeds the number of enum string options " ));
00284 
00285     mapStatusInfo.insert(std::make_pair((int)  ECAFE_PVGROUP_GROUPHANDLE_MISMATCH, "PVGroup previously assigned to another group handle " ));
00286 
00287     mapStatusInfo.insert(std::make_pair((int)  ECAFE_TIMEOUT_SET_AND_MATCH, "Readback channel did not reach set value within specified timeout period "));
00288 
00289                 mapStatusInfo.insert(std::make_pair((int)  ECAFE_HANDLE_MISMATCH_SET_AND_MATCH, "Number of set/readback handles do not match"));
00290     mapStatusInfo.insert(std::make_pair((int)  ECAFE_LOAD_COLLECTION,     "CAFE collection could not be loaded from xml configuration file " ));
00291     mapStatusInfo.insert(std::make_pair((int)  ECAFE_LOAD_GROUP,          "CAFE group could not be loaded from group xml configuration file " ));
00292 
00293 
00294 }
00295 
00296   ~CAFEStatusInfo() {};
00297   
00298 
00299   std::string message (int i) {
00300 
00301     if (i<ICAFE_STATUS_BASE) {
00302         std::string c= ca_message(i);
00303         return c;
00304     }
00305     else {
00306         posStatusInfo = mapStatusInfo.find(i);
00307         if (posStatusInfo != mapStatusInfo.end()) {
00308             return    posStatusInfo->second;
00309         }
00310 
00311     std::ostringstream oss;
00312     oss << "INVALID ERROR CODE: " << i ; //<< std::endl;
00313     //std::cout << oss.str();
00314 
00315     return oss.str();
00316 
00317     }
00318   };
00319 
00320 
00321 
00322   void printAll() {
00323     std::cout << "-----------------------" << std::endl;
00324     std::cout << "CAFE ERROR MESSAGE LIST" << std::endl;
00325     std::cout << "-----------------------" << std::endl;
00326     for (posStatusInfo=mapStatusInfo.begin(); posStatusInfo != mapStatusInfo.end(); ++posStatusInfo) {
00327         std::cout << posStatusInfo->first << " " << posStatusInfo->second << std::endl;
00328     }
00329     std::cout << "------------------" << std::endl;
00330   };
00331 };
00332 
00333 
00334 
00335 
00336 
00337 class CAFEStatusCode {
00338     typedef std::map<int, std::string> mapLongString;
00339         
00340 private:  
00341     mapLongString mapStatusCode;
00342     mapLongString::iterator pos;
00343 
00344 public:
00345   CAFEStatusCode() {
00346     mapStatusCode.insert(std::make_pair(ECA_NORMAL,        "SUCCESS: ECA_NORMAL"));
00347     mapStatusCode.insert(std::make_pair(ECA_ALLOCMEM,      "WARNING: ECA_ALLOCMEM")); 
00348     mapStatusCode.insert(std::make_pair(ECA_TOLARGE,       "WARNING: ECA_TOLARGE"));
00349     mapStatusCode.insert(std::make_pair(ECA_TIMEOUT,       "WARNING: ECA_TIMEOUT"));
00350     mapStatusCode.insert(std::make_pair(ECA_BADTYPE,         "ERROR: ECA_BADTYPE"));
00351     mapStatusCode.insert(std::make_pair(ECA_INTERNAL,        "FATAL: ECA_INTERNAL")); 
00352     mapStatusCode.insert(std::make_pair(ECA_GETFAIL,       "WARNING: ECA_GETFAIL"));
00353     mapStatusCode.insert(std::make_pair(ECA_PUTFAIL,       "WARNING: ECA_PUTFAIL")); 
00354     mapStatusCode.insert(std::make_pair(ECA_BADCOUNT,      "WARNING: ECA_BADCOUNT"));
00355     mapStatusCode.insert(std::make_pair(ECA_BADSTR,          "ERROR: ECA_BADSTR"));
00356     mapStatusCode.insert(std::make_pair(ECA_DISCONN,       "WARNING: ECA_DISCONN"));
00357     mapStatusCode.insert(std::make_pair(ECA_DBLCHNL,       "WARNING: ECA_DBLCHNL"));
00358     mapStatusCode.insert(std::make_pair(ECA_EVDISALLOW,      "ERROR: ECA_EVDISALLOW"));
00359     mapStatusCode.insert(std::make_pair(ECA_BADMONID,        "ERROR: ECA_BADMONID"));
00360     mapStatusCode.insert(std::make_pair(ECA_BADMASK,         "ERROR: ECA_BADMASK"));
00361     mapStatusCode.insert(std::make_pair(ECA_IODONE ,          "INFO: ECA_IODONE "));
00362     mapStatusCode.insert(std::make_pair(ECA_IOINPROGRESS,     "INFO: ECA_IOINPROGRESS"));
00363     mapStatusCode.insert(std::make_pair(ECA_BADSYNCGRP,      "ERROR: ECA_BADSYNCGRP"));
00364     mapStatusCode.insert(std::make_pair(ECA_PUTCBINPROG,     "ERROR: ECA_PUTCBINPROG"));
00365     mapStatusCode.insert(std::make_pair(ECA_NORDACCESS,    "WARNING: ECA_NORDACCESS"));
00366     mapStatusCode.insert(std::make_pair(ECA_NOWTACCESS,    "WARNING: ECA_NOWTACCESS"));
00367     mapStatusCode.insert(std::make_pair(ECA_ANACHRONISM,     "ERROR: ECA_ANACHRONISM"));
00368     mapStatusCode.insert(std::make_pair(ECA_NOSEARCHADDR,  "WARNING: ECA_NOSEARCHADDR"));
00369     mapStatusCode.insert(std::make_pair(ECA_NOCONVERT,     "WARNING: ECA_NOCONVERT"));
00370     mapStatusCode.insert(std::make_pair(ECA_BADCHID,         "ERROR: ECA_BADCHID"));
00371     mapStatusCode.insert(std::make_pair(ECA_BADFUNCPTR,      "ERROR: ECA_BADFUNCPTR"));
00372     mapStatusCode.insert(std::make_pair(ECA_ISATTACHED,    "WARNING: ECA_ISATTACHED"));
00373     mapStatusCode.insert(std::make_pair(ECA_UNAVAILINSERV, "WARNING: ECA_UNAVAILINSERV"));
00374     mapStatusCode.insert(std::make_pair(ECA_CHANDESTROY,   "WARNING: ECA_CHANDESTROY"));
00375     mapStatusCode.insert(std::make_pair(ECA_BADPRIORITY,     "ERROR: ECA_BADPRIORITY"));
00376     mapStatusCode.insert(std::make_pair(ECA_NOTTHREADED,     "ERROR: ECA_NOTTHREADED"));
00377     mapStatusCode.insert(std::make_pair(ECA_16KARRAYCLIENT,"WARNING: ECA_16KARRAYCLIENT"));
00378     mapStatusCode.insert(std::make_pair(ECA_CONNSEQTMO,    "WARNING: ECA_CONNSEQTMO"));
00379     mapStatusCode.insert(std::make_pair(ECA_UNRESPTMO ,    "WARNING: ECA_UNRESPTMO"));
00380     mapStatusCode.insert(std::make_pair((int)  ICAFE_CS_NEVER_CONN,   "CHANNEL STATE: ICAFE_CS_NEVER_CONN" ));
00381     mapStatusCode.insert(std::make_pair((int)  ICAFE_CS_PREV_CONN,    "CHANNEL STATE: ICAFE_CS_PREV_CONN " ));
00382     mapStatusCode.insert(std::make_pair((int)  ICAFE_CS_CONN,         "CHANNEL STATE: ICAFE_CS_CONN" ));
00383     mapStatusCode.insert(std::make_pair((int)  ICAFE_CS_CLOSED,       "CHANNEL STATE: ICAFE_CS_CLOSED" ));
00384     mapStatusCode.insert(std::make_pair((int)  ICAFE_CS_DISCONN,      "CHANNEL STATE: ICAFE_CS_DISCONN" ));
00385     mapStatusCode.insert(std::make_pair((int)  ICAFE_CS_UNKNOWN,      "CHANNEL STATE: ICAFE_CS_UNKNOWN" ));
00386 
00387     mapStatusCode.insert(std::make_pair((int)  ICAFE_TYPENOTCONN,     "CHANNEL FIELD TYPE: ICAFE_CFT_TYPENOTCONN"));
00388     mapStatusCode.insert(std::make_pair((int)  ICAFE_RULE_FALSE,      "CAFE INFO: ICAFE_RULE_FALSE"));
00389     mapStatusCode.insert(std::make_pair((int)  ICAFE_BADCOUNT,          "CAFE INFO: ICAFE_BADCOUNT"));
00390     mapStatusCode.insert(std::make_pair((int)  ICAFE_CALLBACK_NOT_YET_INVOKED, "CAFE_INFO: ICAFE_CALLBACK_NOT_YET_INVOKED"));
00391     mapStatusCode.insert(std::make_pair((int)  ICAFE_WAITING_FOR_PREV_CALLBACK, "CAFE_INFO: ICAFE_WAITING_FOR_PREV_CALLBACK"));
00392     mapStatusCode.insert(std::make_pair((int)  ICAFE_CACHE_EMPTY,     "CAFE_INFO:ICAFE_CACHE_EMPTY"));
00393     mapStatusCode.insert(std::make_pair((int)  ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT, "CAFE_INFO: ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT"));
00394     mapStatusCode.insert(std::make_pair((int)  ICAFE_CA_OP_CONN_UP,   "CHANNEL CONNECTION: ICAFE_CC_OP_CONN_UP" ));
00395     mapStatusCode.insert(std::make_pair((int)  ICAFE_CA_OP_CONN_DOWN, "CHANNEL CONNECTION: ICAFE_CC_OP_CONN_DOWN" ));
00396 
00397     mapStatusCode.insert(std::make_pair((int)  ICAFE_MONITOR_DELAYED_AS_CONN_DOWN, "CHANNEL CONNECTION: ICAFE_MONITOR_DELAYED_AS_CONN_DOWN"));
00398           mapStatusCode.insert(std::make_pair((int)  ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE, "CAFE_INFO: ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE"));
00399                 
00400                 mapStatusCode.insert(std::make_pair((int)  ICAFE_SET_AND_GET_MISMATCH, "CAFE_INFO: ICAFE_SET_AND_GET_MISMATCH"));
00401                 
00402 
00403     mapStatusCode.insert(std::make_pair((int)  ECAFE_NODATA,          "CAFE ERROR: ECAFE_NODATA"));
00404     mapStatusCode.insert(std::make_pair((int)  ECAFE_BADCOUNT,        "CAFE ERROR: ECAFE_BADCOUNT"));
00405     mapStatusCode.insert(std::make_pair((int)  ECAFE_BADSTR,          "CAFE ERROR: ECAFE_BADSTR"));
00406     mapStatusCode.insert(std::make_pair((int)  ECAFE_BADTYPE,         "CAFE ERROR: ECAFE_BADTYPE"));
00407 
00408     mapStatusCode.insert(std::make_pair((int)  ECAFE_NO_CONVERT,           "CAFE ERROR: ECAFE_NO_CONVERT"));
00409     mapStatusCode.insert(std::make_pair((int)  ECAFE_NULLCONTEXT,          "CAFE ERROR: ECAFE_NULLCONTEXT"));
00410     mapStatusCode.insert(std::make_pair((int)  ECAFE_NULLCHID,             "CAFE ERROR: ECAFE_NULLCHID"));
00411     mapStatusCode.insert(std::make_pair((int)  ECAFE_NULLEVID,             "CAFE ERROR: ECAFE_NULLEVID"));
00412     mapStatusCode.insert(std::make_pair((int)  ECAFE_UNKNOWN_COLLECTION,   "CAFE ERROR: ECAFE_UNKNOWN_COLLECTION"));
00413     mapStatusCode.insert(std::make_pair((int)  ECAFE_EMPTY_COLLECTION,     "CAFE ERROR: ECAFE_EMPTY_COLLECTION"));
00414     mapStatusCode.insert(std::make_pair((int)  ECAFE_COLLECTION_PREV_DEF,  "CAFE ERROR: ECAFE_COLLECTION_PREV_DEF"));
00415     mapStatusCode.insert(std::make_pair((int)  ECAFE_COLLECTION_INVALID_MEMBER,  "CAFE ERROR: ECAFE_COLLECTION_INVALID_MEMBER"));
00416     mapStatusCode.insert(std::make_pair((int)  ECAFE_RULE_FALSE,           "CAFE ERROR/INFO: ECAFE_RULE_FALSE"));
00417     mapStatusCode.insert(std::make_pair((int)  ECAFE_UNKNOWN_GROUP,        "CAFE ERROR: ECAFE_UNKNOWN_GROUP"));
00418     mapStatusCode.insert(std::make_pair((int)  ECAFE_EMPTY_GROUP,          "CAFE ERROR: ECAFE_EMPTY_GROUP"));
00419     mapStatusCode.insert(std::make_pair((int)  ECAFE_GROUP_PREV_DEF,       "CAFE ERROR: ECAFE_GROUP_PREV_DEF"));
00420     mapStatusCode.insert(std::make_pair((int)  ECAFE_INVALID_HANDLE,       "CAFE ERROR: ECAFE_INVALID_HANDLE"));
00421     mapStatusCode.insert(std::make_pair((int)  ECAFE_INVALID_GROUP_HANDLE, "CAFE ERROR: ECAFE_INVALID_GROUP_HANDLE"));
00422     mapStatusCode.insert(std::make_pair((int)  ECAFE_NORDACCESS,       "CAFE ERROR: ECAFE_NORDACCESS"));
00423     mapStatusCode.insert(std::make_pair((int)  ECAFE_NOWTACCESS,       "CAFE ERROR: ECAFE_NOWTACCESS"));
00424     mapStatusCode.insert(std::make_pair((int)  ECAFE_TIMEOUT,          "CAFE ERROR: ECAFE_TIMEOUT"));
00425     
00426 
00427     mapStatusCode.insert(std::make_pair((int)  ECAFE_CANNOT_OPEN_FILE,     "CAFE ERROR: ECAFE_CANNOT_OPEN_FILE"));
00428     mapStatusCode.insert(std::make_pair((int)  ECAFE_INVALID_SWITCH_CASE,  "CAFE ERROR: ECAFE_INVALID_SWITCH_CASE"));
00429     mapStatusCode.insert(std::make_pair((int)  ECAFE_PVALIAS_INVALID,      "CAFE ERROR: ECAFE_PVALIAS_INVALID"));
00430     mapStatusCode.insert(std::make_pair((int)  ECAFE_PVALIAS_PREV_DEF,     "CAFE ERROR: ECAFE_PVALIAS_PREV_DEF"));
00431     mapStatusCode.insert(std::make_pair((int)  ECAFE_PVNAME_PREV_DEF_AS_PVALIAS,"CAFE ERROR: ECAFE_PVNAME_PREV_DEF_AS_PVALIAS"));
00432     mapStatusCode.insert(std::make_pair((int)  ECAFE_DEVICE_ATTRIB_NOT_FOUND,"CAFE ERROR: ECAFE_DEVICE_ATTRIB_NOT_FOUND"));
00433     mapStatusCode.insert(std::make_pair((int)  ECAFE_HASH_UNIQUEID_EXISTS, "CAFE ERROR: ECAFE_HASH_UNIQUEID_EXISTS"));
00434     mapStatusCode.insert(std::make_pair((int)  ECAFE_WRONG_CA_CONTEXT,     "CAFE ERROR: ECAFE_WRONG_CA_CONTEXT"));
00435     mapStatusCode.insert(std::make_pair((int)  ECAFE_INVALID_CAFENUM_POLICY_TYPE, "CAFE ERROR: ECAFE_INVALID_CAFENUM_POLICY_TYPE"));
00436     mapStatusCode.insert(std::make_pair((int)  ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED, "CAFE:ERROR: ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED"));
00437     mapStatusCode.insert(std::make_pair((int)  ECAFE_INVALID_ENUM_INDEX,   "CAFE:ERROR: ECAFE_INVALID_ENUM_INDEX"));
00438     mapStatusCode.insert(std::make_pair((int)  ECAFE_PVGROUP_GROUPHANDLE_MISMATCH, "CAFE ERROR:ECAFE_PVGROUP_GROUPHANDLE_MISMATCH"));
00439 
00440     mapStatusCode.insert(std::make_pair((int)  ECAFE_TIMEOUT_SET_AND_MATCH, "CAFE ERROR: CAFE_TIMEOUT_SET_AND_MATCH"));
00441                 mapStatusCode.insert(std::make_pair((int)  ECAFE_HANDLE_MISMATCH_SET_AND_MATCH, "CAFE ERROR: CAFE_HANDLE_MISMATCH_SET_AND_MATCH"));
00442     mapStatusCode.insert(std::make_pair((int)  ECAFE_LOAD_COLLECTION,      "CAFE ERROR: ECAFE_LOAD_COLLECTION"));
00443     mapStatusCode.insert(std::make_pair((int)  ECAFE_LOAD_GROUP,           "CAFE ERROR: ECAFE_LOAD_GROUP"));
00444 };
00445 
00446   ~CAFEStatusCode() {};
00447   
00448   std::string message (int i) {
00449                   
00450     pos = mapStatusCode.find(i);  
00451     if (pos != mapStatusCode.end()) {
00452         return    pos->second;
00453     }
00454 
00455     std::ostringstream oss;
00456     oss << "INVALID ERROR CODE: " << i ; //<< std::endl;
00457     //std::cout << oss.str();
00458 
00459     return oss.str();
00460     };
00461 
00462   
00463   std::string msgIDAsString (int i) {
00464                   
00465     pos = mapStatusCode.find(i);    
00466     if (pos != mapStatusCode.end()) {
00467                     std::size_t found = (pos->second).find(": ");
00468                                 if (found!=std::string::npos) {
00469                                 
00470                                         return (pos->second).substr(found+2,(pos->second).length());
00471                                 }
00472                                 else {
00473                 return    pos->second;
00474                                 }
00475     }
00476 
00477     std::ostringstream oss;
00478     oss << "INVALID ERROR CODE: " << i ; //<< std::endl;
00479     //std::cout << oss.str();
00480 
00481     return oss.str();
00482     };
00483 
00484 
00485   int enumIs (std::string message) {
00486     for (pos=mapStatusCode.begin(); pos != mapStatusCode.end(); ++pos) {
00487 
00488       if (pos->second==message) return pos->first; 
00489       // String searches such as s.find(s1) return string::npos on failure
00490       else if ( (pos->second).find(message)  != std::string::npos) return pos->first;
00491     }
00492     return  -1;
00493   };
00494         
00495         bool isTimeout(int statusCodeToCheck) {
00496                  if (statusCodeToCheck==ECA_TIMEOUT || statusCodeToCheck==ECAFE_TIMEOUT) {
00497                  return true; 
00498                  }
00499                  else {return false;}
00500         }
00501 
00502   void printAll() {
00503     std::cout << "-------------------" << std::endl;
00504     std::cout << "CAFE ERROR CODE LIST" << std::endl;
00505     std::cout << "-------------------" << std::endl;
00506     for (pos=mapStatusCode.begin(); pos != mapStatusCode.end(); ++pos) {
00507       std::cout << pos->first << " " << pos->second << std::endl;
00508     }
00509     std::cout << "------------------" << std::endl;
00510   };
00511 
00512 };
00513 
00514 
00515 
00516 class CAFEStatusSeverity {
00517     typedef std::map<int, std::string> mapLongString;
00518         
00519 private:  
00520     mapLongString mapStatusSeverity;
00521     mapLongString::iterator pos;
00522 
00523 public:
00524   CAFEStatusSeverity() {
00525     mapStatusSeverity.insert(std::make_pair(ECA_NORMAL,        "INFO"));
00526     mapStatusSeverity.insert(std::make_pair(ECA_ALLOCMEM,               "WARN")); 
00527     mapStatusSeverity.insert(std::make_pair(ECA_TOLARGE,                "WARN"));
00528     mapStatusSeverity.insert(std::make_pair(ECA_TIMEOUT,                "WARN"));
00529     mapStatusSeverity.insert(std::make_pair(ECA_BADTYPE,                                "ERROR"));
00530     mapStatusSeverity.insert(std::make_pair(ECA_INTERNAL,                                               "FATAL")); 
00531     mapStatusSeverity.insert(std::make_pair(ECA_GETFAIL,                "WARN"));
00532     mapStatusSeverity.insert(std::make_pair(ECA_PUTFAIL,                "WARN")); 
00533     mapStatusSeverity.insert(std::make_pair(ECA_BADCOUNT,               "WARN"));
00534     mapStatusSeverity.insert(std::make_pair(ECA_BADSTR,                                 "ERROR"));
00535     mapStatusSeverity.insert(std::make_pair(ECA_DISCONN,                "WARN"));
00536     mapStatusSeverity.insert(std::make_pair(ECA_DBLCHNL,                "WARN"));
00537     mapStatusSeverity.insert(std::make_pair(ECA_EVDISALLOW,                             "ERROR"));
00538     mapStatusSeverity.insert(std::make_pair(ECA_BADMONID,                               "ERROR"));
00539     mapStatusSeverity.insert(std::make_pair(ECA_BADMASK,                                "ERROR"));
00540     mapStatusSeverity.insert(std::make_pair(ECA_IODONE ,                "INFO"));
00541     mapStatusSeverity.insert(std::make_pair(ECA_IOINPROGRESS,   "INFO"));
00542     mapStatusSeverity.insert(std::make_pair(ECA_BADSYNCGRP,                             "ERROR"));
00543     mapStatusSeverity.insert(std::make_pair(ECA_PUTCBINPROG,                            "ERROR"));
00544     mapStatusSeverity.insert(std::make_pair(ECA_NORDACCESS,             "WARN"));
00545     mapStatusSeverity.insert(std::make_pair(ECA_NOWTACCESS,             "WARN"));
00546     mapStatusSeverity.insert(std::make_pair(ECA_ANACHRONISM,                            "ERROR"));
00547     mapStatusSeverity.insert(std::make_pair(ECA_NOSEARCHADDR,           "WARN"));
00548     mapStatusSeverity.insert(std::make_pair(ECA_NOCONVERT,              "WARN"));
00549     mapStatusSeverity.insert(std::make_pair(ECA_BADCHID,                                "ERROR"));
00550     mapStatusSeverity.insert(std::make_pair(ECA_BADFUNCPTR,                             "ERROR"));
00551     mapStatusSeverity.insert(std::make_pair(ECA_ISATTACHED,             "WARN"));
00552     mapStatusSeverity.insert(std::make_pair(ECA_UNAVAILINSERV,          "WARN"));
00553     mapStatusSeverity.insert(std::make_pair(ECA_CHANDESTROY,            "WARN"));
00554     mapStatusSeverity.insert(std::make_pair(ECA_BADPRIORITY,                            "ERROR"));
00555     mapStatusSeverity.insert(std::make_pair(ECA_NOTTHREADED,                            "ERROR"));
00556     mapStatusSeverity.insert(std::make_pair(ECA_16KARRAYCLIENT,         "WARN"));
00557     mapStatusSeverity.insert(std::make_pair(ECA_CONNSEQTMO,             "WARN"));
00558     mapStatusSeverity.insert(std::make_pair(ECA_UNRESPTMO ,             "WARN"));
00559     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CS_NEVER_CONN,   "WARN" ));
00560     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CS_PREV_CONN,    "INFO" ));
00561     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CS_CONN,         "INFO" ));
00562     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CS_CLOSED,       "INFO" ));
00563     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CS_DISCONN,      "WARN" ));
00564     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CS_UNKNOWN,      "ERROR" ));
00565 
00566     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_TYPENOTCONN,                                           "WARN"));
00567     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_RULE_FALSE,      "INFO"));
00568     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_BADCOUNT,                                      "WARN"));
00569     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CALLBACK_NOT_YET_INVOKED,      "WARN"));
00570     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_WAITING_FOR_PREV_CALLBACK, "WARN"));
00571     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CACHE_EMPTY,                                           "WARN"));
00572     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CHANNEL_BLOCKING_POLICY_CONFLICT, "WARN"));
00573     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CA_OP_CONN_UP,   "INFO" ));
00574     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_CA_OP_CONN_DOWN, "WARN" ));
00575 
00576     mapStatusSeverity.insert(std::make_pair((int)  ICAFE_MONITOR_DELAYED_AS_CONN_DOWN, "WARN"));
00577           mapStatusSeverity.insert(std::make_pair((int)  ICAFE_HAS_MONITOR_GET_DONE_FROM_CACHE, "INFO"));
00578                 
00579                 mapStatusSeverity.insert(std::make_pair((int)  ICAFE_SET_AND_GET_MISMATCH, "WARN"));
00580 
00581     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_NODATA,          "WARN"));
00582     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_BADCOUNT,        "WARN"));
00583     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_BADSTR,          "ERROR"));
00584     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_BADTYPE,         "ERROR"));
00585 
00586     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_NO_CONVERT,           "WARN"));
00587     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_NULLCONTEXT,          "ERROR"));
00588     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_NULLCHID,             "ERROR"));
00589     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_NULLEVID,             "ERROR"));
00590     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_UNKNOWN_COLLECTION,   "ERROR"));
00591     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_EMPTY_COLLECTION,     "ERROR"));
00592     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_COLLECTION_PREV_DEF,  "ERROR"));
00593     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_COLLECTION_INVALID_MEMBER,  "ERROR"));
00594     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_RULE_FALSE,           "WARN"));
00595     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_UNKNOWN_GROUP,        "ERROR"));
00596     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_EMPTY_GROUP,          "ERROR"));
00597     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_GROUP_PREV_DEF,       "ERROR"));
00598     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_INVALID_HANDLE,       "ERROR"));
00599     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_INVALID_GROUP_HANDLE, "ERROR"));
00600     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_NORDACCESS,                            "WARN"));
00601     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_NOWTACCESS,                            "WARN"));
00602     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_TIMEOUT,                               "WARN"));
00603     
00604 
00605     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_CANNOT_OPEN_FILE,     "ERROR"));
00606     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_INVALID_SWITCH_CASE,  "ERROR"));
00607     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_PVALIAS_INVALID,      "ERROR"));
00608     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_PVALIAS_PREV_DEF,     "ERROR"));
00609     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_PVNAME_PREV_DEF_AS_PVALIAS,"ERROR"));
00610     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_DEVICE_ATTRIB_NOT_FOUND,"ERROR"));
00611     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_HASH_UNIQUEID_EXISTS, "ERROR"));
00612     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_WRONG_CA_CONTEXT,     "ERROR"));
00613     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_INVALID_CAFENUM_POLICY_TYPE, "ERROR"));
00614     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_MAX_MONITORS_PER_CHAN_EXCEEDED, "ERROR"));
00615     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_INVALID_ENUM_INDEX,   "ERROR"));
00616     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_PVGROUP_GROUPHANDLE_MISMATCH, "ERROR"));
00617 
00618     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_TIMEOUT_SET_AND_MATCH, "WARN"));
00619           mapStatusSeverity.insert(std::make_pair((int)  ECAFE_HANDLE_MISMATCH_SET_AND_MATCH, "ERROR"));
00620     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_LOAD_COLLECTION,      "ERROR"));
00621     mapStatusSeverity.insert(std::make_pair((int)  ECAFE_LOAD_GROUP,           "ERROR"));
00622 };
00623 
00624   ~CAFEStatusSeverity() {};
00625   
00626   std::string message (int i) {
00627                   
00628     pos = mapStatusSeverity.find(i);    
00629     if (pos != mapStatusSeverity.end()) {
00630         return    pos->second;
00631     }
00632 
00633     std::ostringstream oss;
00634     oss << "INVALID ERROR CODE: " << i ; //<< std::endl;
00635     //std::cout << oss.str();
00636 
00637     return oss.str();
00638     };
00639 
00640   int enumIs (std::string message) {
00641     for (pos=mapStatusSeverity.begin(); pos != mapStatusSeverity.end(); ++pos) {
00642 
00643       if (pos->second==message) return pos->first; 
00644       // String searches such as s.find(s1) return string::npos on failure
00645       else if ( (pos->second).find(message)  != std::string::npos) return pos->first;
00646     }
00647     return  -1;
00648   };
00649 
00650   void printAll() {
00651     std::cout << "-------------------" << std::endl;
00652     std::cout << "CAFE STATUS SEVERITY LIST" << std::endl;
00653     std::cout << "-------------------" << std::endl;
00654     for (pos=mapStatusSeverity.begin(); pos != mapStatusSeverity.end(); ++pos) {
00655       std::cout << pos->first << " " << pos->second << std::endl;
00656     }
00657     std::cout << "------------------" << std::endl;
00658   };
00659 
00660 };
00661 
00662 
00663 
00664 class CAFEStatus {
00665 
00666     public:  
00667                 CAFEStatusSeverity css; 
00668     CAFEStatusInfo csi;
00669     CAFEStatusCode csc;
00670     CAFEStatus() {};
00671                                 
00672                 std::string severity(int i) {
00673                         return (std::string) css.message(i); 
00674                 }
00675                 
00676                 std::string msgID(int i) {
00677                         return (std::string) csc.msgIDAsString(i); 
00678                 }
00679                 
00680                 std::string code(int i) {
00681                         return (std::string) csc.message(i); 
00682                 }
00683     
00684                 std::string info(int i) {
00685                         return (std::string) csi.message(i); 
00686                 }    
00687 
00688                 std::string message(int i) {
00689                         std::string strRet="";
00690                         strRet.append(csc.message(i));
00691                         strRet.append(" ");
00692                         strRet.append(csi.message(i));
00693                         return (std::string) strRet; 
00694                 }
00695 
00696         void report (int i) {
00697         std::cout << "------------------" << std::endl;
00698         std::cout << "CAFE STATUS REPORT" << std::endl;
00699         std::cout << "------------------" << std::endl;
00700         std::cout << csc.message(i)       << std::endl;
00701         std::cout << csi.message(i)       << std::endl;
00702         std::cout << "------------------" << std::endl;
00703     };
00704 };
00705 
00706 #endif // STATUSCODES_H

Generated on 3 May 2017 for CAFE by  doxygen 1.6.1