diff options
author | Chris Wilson <chris+github@qwirx.com> | 2014-04-29 19:22:54 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2014-04-29 19:22:54 +0000 |
commit | 1edb424b734ea3e4f2128e1cbc77a22bd001f8d5 (patch) | |
tree | da3e95edf1ab1a1808ac6673811f76610f9dfce2 | |
parent | 1ce71f487e6cd6514198c3769cd0a337395c1f8e (diff) |
Add a ToString method to IOStream and some subclasses.
Useful to help debug problems such as invalid file headers when the source
of the stream might not be too obvious.
-rw-r--r-- | lib/backupstore/BackupStoreDirectory.cpp | 6 | ||||
-rw-r--r-- | lib/common/BufferedStream.h | 4 | ||||
-rw-r--r-- | lib/common/FileStream.h | 4 | ||||
-rw-r--r-- | lib/common/IOStream.cpp | 23 | ||||
-rw-r--r-- | lib/common/IOStream.h | 1 | ||||
-rw-r--r-- | lib/raidfile/RaidFileRead.cpp | 7 | ||||
-rw-r--r-- | lib/raidfile/RaidFileRead.h | 1 |
7 files changed, 40 insertions, 6 deletions
diff --git a/lib/backupstore/BackupStoreDirectory.cpp b/lib/backupstore/BackupStoreDirectory.cpp index 81126ede..0c575c51 100644 --- a/lib/backupstore/BackupStoreDirectory.cpp +++ b/lib/backupstore/BackupStoreDirectory.cpp @@ -133,11 +133,11 @@ void BackupStoreDirectory::ReadFromStream(IOStream &rStream, int Timeout) if(OBJECTMAGIC_DIR_MAGIC_VALUE != ntohl(hdr.mMagicValue)) { THROW_EXCEPTION_MESSAGE(BackupStoreException, BadDirectoryFormat, - "Wrong magic number in directory object " << - BOX_FORMAT_OBJECTID(mObjectID) << ": expected " << + "Wrong magic number for directory: expected " << BOX_FORMAT_HEX32(OBJECTMAGIC_DIR_MAGIC_VALUE) << " but found " << - BOX_FORMAT_HEX32(ntohl(hdr.mMagicValue))); + BOX_FORMAT_HEX32(ntohl(hdr.mMagicValue)) << " in " << + rStream.ToString()); } // Get data diff --git a/lib/common/BufferedStream.h b/lib/common/BufferedStream.h index 079c482a..4987e37b 100644 --- a/lib/common/BufferedStream.h +++ b/lib/common/BufferedStream.h @@ -33,6 +33,10 @@ public: virtual bool StreamDataLeft(); virtual bool StreamClosed(); + virtual std::string ToString() const + { + return std::string("Buffered ") + mrSource.ToString(); + } private: BufferedStream(const BufferedStream &rToCopy) : mrSource(rToCopy.mrSource) { /* do not call */ } diff --git a/lib/common/FileStream.h b/lib/common/FileStream.h index 9101a968..8489188c 100644 --- a/lib/common/FileStream.h +++ b/lib/common/FileStream.h @@ -49,6 +49,10 @@ public: virtual bool StreamClosed(); bool CompareWith(IOStream& rOther, int Timeout = IOStream::TimeOutInfinite); + std::string ToString() const + { + return std::string("local file ") + mFileName; + } private: tOSFileHandle mOSFileHandle; diff --git a/lib/common/IOStream.cpp b/lib/common/IOStream.cpp index fc9d0bc3..71e8f8c0 100644 --- a/lib/common/IOStream.cpp +++ b/lib/common/IOStream.cpp @@ -245,7 +245,30 @@ void IOStream::Flush(int Timeout) } } +// -------------------------------------------------------------------------- +// +// Function +// Name: IOStream::Write +// Purpose: Convenience method for writing a null-terminated +// C string to a protocol buffer. +// +// -------------------------------------------------------------------------- void IOStream::Write(const char *pBuffer) { Write(pBuffer, strlen(pBuffer)); } + +// -------------------------------------------------------------------------- +// +// Function +// Name: IOStream::ToString() +// Purpose: Returns a string which describes this stream. Useful +// when reporting exceptions about a stream of unknown +// origin, for example in BackupStoreDirectory(). +// Created: 2014/04/28 +// +// -------------------------------------------------------------------------- +std::string IOStream::ToString() const +{ + return "unknown IOStream"; +} diff --git a/lib/common/IOStream.h b/lib/common/IOStream.h index 0b1cedd3..51aef19f 100644 --- a/lib/common/IOStream.h +++ b/lib/common/IOStream.h @@ -65,6 +65,7 @@ public: void Flush(int Timeout = IOStream::TimeOutInfinite); static int ConvertSeekTypeToOSWhence(int SeekType); + virtual std::string ToString() const; }; diff --git a/lib/raidfile/RaidFileRead.cpp b/lib/raidfile/RaidFileRead.cpp index 9812411b..7591961f 100644 --- a/lib/raidfile/RaidFileRead.cpp +++ b/lib/raidfile/RaidFileRead.cpp @@ -1767,6 +1767,7 @@ IOStream::pos_type RaidFileRead::GetDiscUsageInBlocks() return RaidFileUtil::DiscUsageInBlocks(GetFileSize(), rdiscSet); } - - - +std::string RaidFileRead::ToString() const +{ + return std::string("RaidFile ") + mFilename; +} diff --git a/lib/raidfile/RaidFileRead.h b/lib/raidfile/RaidFileRead.h index 8a04409d..e746ed46 100644 --- a/lib/raidfile/RaidFileRead.h +++ b/lib/raidfile/RaidFileRead.h @@ -61,6 +61,7 @@ public: virtual pos_type BytesLeftToRead(); pos_type GetDiscUsageInBlocks(); + std::string ToString() const; typedef int64_t FileSizeType; |