X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=trace_snappyfile.hpp;h=33159ec73cc81eb4413158de707940a2c64c5211;hb=ac92a2115ab3c759add836e115f108c945e0195b;hp=61b7ab1b29435aeeb51c833a05958c82f3bcee32;hpb=42dbb827fc8340e7d1d12ab317b3841275c187e9;p=apitrace diff --git a/trace_snappyfile.hpp b/trace_snappyfile.hpp index 61b7ab1..33159ec 100644 --- a/trace_snappyfile.hpp +++ b/trace_snappyfile.hpp @@ -52,6 +52,9 @@ public: File::Mode mode = File::Read); virtual ~SnappyFile(); + virtual bool supportsOffsets() const; + virtual File::Offset currentOffset(); + virtual void setCurrentOffset(const File::Offset &offset); protected: virtual bool rawOpen(const std::string &filename, File::Mode mode); virtual bool rawWrite(const void *buffer, size_t length); @@ -59,6 +62,8 @@ protected: virtual int rawGetc(); virtual void rawClose(); virtual void rawFlush(); + virtual bool rawSkip(size_t length); + virtual int rawPercentRead(); private: inline size_t usedCacheSize() const @@ -79,7 +84,8 @@ private: { return m_stream.eof() && freeCacheSize() == 0; } - void flushCache(); + void flushWriteCache(); + void flushReadCache(size_t skipLength = 0); void createCache(size_t size); void writeCompressedLength(size_t length); size_t readCompressedLength(); @@ -90,6 +96,9 @@ private: size_t m_cacheSize; char *m_compressedCache; + + File::Offset m_currentOffset; + std::streampos m_endPos; }; }