00001 #ifndef neo_Exception_hh_seen
00002 #define neo_Exception_hh_seen
00003
00004
00005
00006 namespace neo {
00007 namespace cca {
00008
00009
00017 enum ExceptionType {
00018 Unexpected = -1,
00019 Nonstandard = 1,
00020 PortNotDefined = 2,
00021 PortAlreadyDefined = 3,
00022 PortNotConnected = 4,
00023 PortNotInUse = 5,
00024 UsesPortNotReleased = 6,
00025 BadPortName = 7,
00026 BadPortType = 8,
00027 BadProperties = 9,
00028 BadPortInfo = 10,
00029 OutOfMemory = 11,
00030 NetworkError = 12
00031 };
00032
00033
00034
00048 class Exception : public ::std::exception
00049 {
00050 private:
00051 enum ExceptionType ccaType;
00052 ::std::string ccaMessage;
00053
00054 public:
00055 virtual ~Exception() throw (){}
00056 virtual const char *what() { return ccaMessage.c_str(); }
00057
00058 Exception(enum ExceptionType t, const ::std::string & message) throw ()
00059 { ccaType = t; ccaMessage = message; }
00060
00061 Exception(enum ExceptionType t) throw ()
00062 { ccaType = t; ccaMessage = ::std::string(""); }
00063
00064 Exception() throw ()
00065 { ccaType = Nonstandard; ccaMessage = ::std::string(""); }
00066
00067 Exception(const ::std::string& message) throw ()
00068 { ccaType = Nonstandard; ccaMessage = message; }
00069
00070 enum ExceptionType getType() { return ccaType; }
00071
00073 ::std::string getMessage() {return ccaMessage; }
00074
00075 void setType( enum ExceptionType t) { ccaType = t; }
00076
00077 void setMessage(const ::std::string & message) { ccaMessage = message; }
00078
00079 };
00080
00081
00082 }
00083 }
00084
00085 #endif // neo_Exception_hh_seen
00086