00001 #ifndef BES_RAWFILE_EXCEPTIONS_H 00002 #define BES_RAWFILE_EXCEPTIONS_H 00003 00004 #include <string> 00005 00006 class RawFileException { 00007 public: 00008 virtual ~RawFileException() {} 00009 00010 virtual void print() const; 00011 }; 00012 00013 class RawExMessage : public RawFileException { 00014 public : 00015 RawExMessage(const char* msg) : m_msg(msg) {} 00016 virtual ~RawExMessage() {} 00017 00018 virtual void print() const; 00019 00020 private : 00021 std::string m_msg; 00022 }; 00023 00024 class InvalidRawFile : public RawFileException { 00025 public: 00026 InvalidRawFile(const char* filename) : m_filename(filename) {} 00027 virtual ~InvalidRawFile() {} 00028 00029 virtual void print() const; 00030 00031 private: 00032 std::string m_filename; 00033 }; 00034 00035 class BadInputStream : public RawFileException { 00036 public: 00037 BadInputStream(const char* block_name) : m_blockName(block_name) {} 00038 virtual ~BadInputStream() {} 00039 00040 virtual void print() const; 00041 00042 private: 00043 std::string m_blockName; 00044 }; 00045 00046 class WrongMarker : public RawFileException { 00047 public: 00048 WrongMarker(uint32_t expect, uint32_t value) : m_expect(expect), m_value(value) {} 00049 virtual ~WrongMarker() {} 00050 00051 virtual void print() const; 00052 00053 private: 00054 uint32_t m_expect; 00055 uint32_t m_value; 00056 }; 00057 00058 class UnexpectedRecordSize : public RawFileException { 00059 public: 00060 UnexpectedRecordSize(const char* block_name, uint32_t expect, uint32_t value) 00061 : m_blockName(block_name), m_expect(expect), m_value(value) { 00062 } 00063 virtual ~UnexpectedRecordSize() {} 00064 00065 virtual void print() const; 00066 00067 private: 00068 std::string m_blockName; 00069 uint32_t m_expect; 00070 uint32_t m_value; 00071 }; 00072 00073 class ReachEndOfFile : public RawFileException { 00074 public: 00075 ReachEndOfFile(const char* fileName) 00076 : m_fileName(fileName) { 00077 } 00078 virtual ~ReachEndOfFile() {} 00079 00080 virtual void print() const; 00081 void print(const char* fname) const; 00082 00083 private: 00084 std::string m_fileName; 00085 }; 00086 00087 class ReachEndOfFileList : public RawFileException { 00088 public : 00089 virtual void print() const; 00090 }; 00091 00092 class FailedToWrite : public RawFileException { 00093 public: 00094 FailedToWrite(const char* block_name) : m_blockName(block_name) { 00095 } 00096 virtual ~FailedToWrite() {} 00097 00098 virtual void print() const; 00099 00100 private: 00101 std::string m_blockName; 00102 }; 00103 00104 #endif