X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_file.cpp;h=3657fd2943088012fa4c69abc790bb753a151f8e;hb=b70a86af10057c5b7fcf79b674cfe5abbeaadebb;hp=f48c1aa9189c8b04c23a92448afc5b51ddd9d216;hpb=ae2b4d32ed56e3ac193cc7205aeb58082c448ce8;p=apitrace diff --git a/common/trace_file.cpp b/common/trace_file.cpp index f48c1aa..3657fd2 100644 --- a/common/trace_file.cpp +++ b/common/trace_file.cpp @@ -26,18 +26,10 @@ #include "trace_file.hpp" -#include "trace_snappyfile.hpp" - #include -#include - -#include -#include "os.hpp" -#include - -using namespace Trace; +using namespace trace; File::File(const std::string &filename, @@ -52,7 +44,8 @@ File::File(const std::string &filename, File::~File() { - close(); + // We can't invoke any overriden virtual method here anymore + assert(!m_isOpened); } @@ -61,120 +54,3 @@ void File::setCurrentOffset(const File::Offset &offset) assert(0); } -bool File::isZLibCompressed(const std::string &filename) -{ - std::fstream stream(filename.c_str(), - std::fstream::binary | std::fstream::in); - if (!stream.is_open()) - return false; - - unsigned char byte1, byte2; - stream >> byte1; - stream >> byte2; - stream.close(); - - return (byte1 == 0x1f && byte2 == 0x8b); -} - - -bool File::isSnappyCompressed(const std::string &filename) -{ - std::fstream stream(filename.c_str(), - std::fstream::binary | std::fstream::in); - if (!stream.is_open()) - return false; - - unsigned char byte1, byte2; - stream >> byte1; - stream >> byte2; - stream.close(); - - return (byte1 == SNAPPY_BYTE1 && byte2 == SNAPPY_BYTE2); -} - -typedef struct gz_stream { - z_stream stream; - int z_err; /* error code for last stream operation */ - int z_eof; /* set if end of input file */ - FILE *file; /* .gz file */ -} gz_dummy_stream; - -ZLibFile::ZLibFile(const std::string &filename, - File::Mode mode) - : File(filename, mode), - m_gzFile(NULL) -{ -} - -ZLibFile::~ZLibFile() -{ -} - -bool ZLibFile::rawOpen(const std::string &filename, File::Mode mode) -{ - m_gzFile = gzopen(filename.c_str(), - (mode == File::Write) ? "wb" : "rb"); - - if (mode == File::Read && m_gzFile) { - //XXX: unfortunately zlib doesn't support - // SEEK_END or we could've done: - //m_endOffset = gzseek(m_gzFile, 0, SEEK_END); - //gzrewind(m_gzFile); - gz_dummy_stream *stream = (gz_dummy_stream *)m_gzFile; - long loc = ftell(stream->file); - fseek(stream->file,0,SEEK_END); - m_endOffset = ftell(stream->file); - fseek(stream->file, loc, SEEK_SET); - } - - return m_gzFile != NULL; -} - -bool ZLibFile::rawWrite(const void *buffer, size_t length) -{ - return gzwrite(m_gzFile, buffer, length) != -1; -} - -bool ZLibFile::rawRead(void *buffer, size_t length) -{ - return gzread(m_gzFile, buffer, length) != -1; -} - -int ZLibFile::rawGetc() -{ - return gzgetc(m_gzFile); -} - -void ZLibFile::rawClose() -{ - if (m_gzFile) { - gzclose(m_gzFile); - m_gzFile = NULL; - } -} - -void ZLibFile::rawFlush() -{ - gzflush(m_gzFile, Z_SYNC_FLUSH); -} - -File::Offset ZLibFile::currentOffset() -{ - return File::Offset(gztell(m_gzFile)); -} - -bool ZLibFile::supportsOffsets() const -{ - return false; -} - -bool ZLibFile::rawSkip(size_t) -{ - return false; -} - -int ZLibFile::rawPercentRead() -{ - gz_dummy_stream *stream = (gz_dummy_stream *)m_gzFile; - return 100 * (ftell(stream->file) / m_endOffset); -}