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