Line data Source code
1 : #include <string> 2 : #include <iostream> 3 : #include <cstdio> 4 : 5 : using namespace std; 6 : 7 : #include <alma/ASDMBinaries/Error.h> 8 : 9 0 : Error::Error(){} 10 : 11 0 : Error::Error(ErrorLevel errlev){ 12 0 : acceptableErrorLevel=errlev; 13 0 : } 14 : 15 0 : Error::Error(ErrorLevel errlev, string message){ 16 0 : errlev_ = errlev; 17 0 : errorMessage_ = message; 18 0 : printMessage(message); 19 0 : if(errlev>=acceptableErrorLevel)throw Error(); 20 0 : } 21 : 22 0 : Error::Error(ErrorLevel errlev, char *fmt, ... ){ 23 0 : errlev_ = errlev; 24 : char buffer[1024]; 25 : va_list args ; 26 0 : va_start( args, fmt ) ; 27 0 : vsprintf( buffer, fmt, args ) ; 28 0 : errorMessage_ = buffer; 29 0 : printMessage(errorMessage_); 30 0 : if(errlev>=acceptableErrorLevel)throw Error(); 31 0 : } 32 : 33 0 : Error::Error(int errlev){ 34 0 : acceptableErrorLevel= (ErrorLevel) errlev; 35 0 : } 36 : 37 0 : Error::Error(int errlev, string message){ 38 0 : errlev_ = (ErrorLevel) errlev; 39 0 : errorMessage_ = message; 40 0 : printMessage(message); 41 0 : if(errlev>=acceptableErrorLevel)throw Error(); 42 0 : } 43 : 44 0 : Error::Error(int errlev, char *fmt, ... ){ 45 0 : errlev_ = (ErrorLevel) errlev; 46 : char buffer[1024]; 47 : va_list args ; 48 0 : va_start( args, fmt ) ; 49 0 : vsprintf( buffer, fmt, args ) ; 50 0 : errorMessage_ = buffer; 51 0 : printMessage(errorMessage_); 52 0 : if(errlev>=acceptableErrorLevel)throw Error(); 53 0 : } 54 : 55 : 56 : 57 0 : Error::~Error(){} 58 : 59 0 : void Error::notify(ErrorLevel errlev, string message){ 60 0 : errlev_ = errlev; 61 0 : errorMessage_ = message; 62 0 : printMessage(message); 63 : //if(errlev>=acceptableErrorLevel)exit(-1); 64 0 : if(errlev>=acceptableErrorLevel)throw Error(); 65 0 : } 66 : 67 0 : void Error::notify(string message){ 68 0 : errorMessage_ = message; 69 0 : cout << message <<endl; 70 0 : } 71 : 72 0 : void Error::setAcceptableLevel(ErrorLevel errlev){ 73 0 : acceptableErrorLevel=errlev; 74 0 : } 75 : 76 0 : ErrorLevel Error::getLevel(){ 77 0 : return errlev_; 78 : } 79 : 80 0 : string Error::getLevelToString(){ 81 0 : if(errlev_==MINOR)return "MINOR"; 82 0 : if(errlev_==WARNING)return "WARNING"; 83 0 : if(errlev_==SERIOUS)return "SERIOUS"; 84 0 : if(errlev_==FATAL)return "FATAL"; 85 0 : return ""; 86 : } 87 : 88 0 : string Error::getErrorMessage(){ 89 0 : string errorMessage=errorMessage_; 90 0 : clearMessage(); 91 0 : return errorMessage; 92 0 : } 93 : 94 0 : void Error::clearMessage(){ 95 0 : errorMessage_=""; 96 0 : clearErrLev(); 97 0 : } 98 : 99 0 : void Error::clearErrLev(){ 100 0 : errlev_=NOERROR; 101 0 : } 102 : 103 0 : ErrorLevel Error::getAcceptableLevel(){ 104 0 : return acceptableErrorLevel; 105 : } 106 : 107 0 : string Error::getAcceptableLevelToString(){ 108 0 : if(acceptableErrorLevel==MINOR)return "MINOR"; 109 0 : if(acceptableErrorLevel==WARNING)return "WARNING"; 110 0 : if(acceptableErrorLevel==SERIOUS)return "SERIOUS"; 111 0 : if(acceptableErrorLevel==FATAL)return "FATAL"; 112 0 : return ""; 113 : } 114 : 115 : 116 : ErrorLevel Error::acceptableErrorLevel=SERIOUS; // default level to stop a process 117 : ErrorLevel Error::errlev_=NOERROR; 118 : string Error::errorMessage_=""; 119 : 120 0 : void Error::printMessage(string message){ 121 0 : switch(errlev_) 122 : { 123 0 : case FATAL: 124 0 : cout << "FATAL ERROR: " + message << endl; 125 0 : break; 126 0 : case SERIOUS: 127 0 : cout << "SERIOUS ERROR: " + message << endl; 128 0 : break; 129 0 : case MINOR: 130 0 : cout << "MINOR ERROR: " + message << endl; 131 0 : break; 132 0 : case WARNING: 133 0 : cout << "WARNING ERROR: " + message << endl; 134 0 : break; 135 0 : default: 136 0 : cout << "ERROR: " + message << endl; 137 : } 138 0 : }