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;
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
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
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
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 ;
00313
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 ;
00457
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 ;
00479
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
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 ;
00635
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
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