diff options
author | Bartosz Taudul <wolf.pld@gmail.com> | 2018-04-02 02:54:25 +0300 |
---|---|---|
committer | Bartosz Taudul <wolf.pld@gmail.com> | 2018-04-02 03:05:39 +0300 |
commit | 68acc30bdd44773ce2454ad2eeafdd60f21c2cff (patch) | |
tree | d5390a6bca1a0ef08075ec267487d3308a3fbfa8 /server/TracyFileRead.hpp | |
parent | 5824b47a6660376969c4391f8b2ea4fd9caa5dba (diff) |
Add support for determining FileRead EOF.
Diffstat (limited to 'server/TracyFileRead.hpp')
-rw-r--r-- | server/TracyFileRead.hpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/server/TracyFileRead.hpp b/server/TracyFileRead.hpp index 52c02849..a53342b5 100644 --- a/server/TracyFileRead.hpp +++ b/server/TracyFileRead.hpp @@ -38,12 +38,24 @@ public: } } + bool IsEOF() + { + if( m_lastBlock != BufSize && m_offset == m_lastBlock ) return true; + if( m_offset == BufSize ) + { + if( fseek( m_file, 1, SEEK_CUR ) != 0 ) return true; + fseek( m_file, -1, SEEK_CUR ); + } + return false; + } + private: FileRead( FILE* f ) : m_stream( LZ4_createStreamDecode() ) , m_file( f ) , m_offset( BufSize ) , m_active( 1 ) + , m_lastBlock( 0 ) {} tracy_force_inline void ReadSmall( void* ptr, size_t size ) @@ -65,7 +77,7 @@ private: uint32_t sz; fread( &sz, 1, sizeof( sz ), m_file ); fread( m_lz4buf, 1, sz, m_file ); - LZ4_decompress_safe_continue( m_stream, m_lz4buf, m_buf[m_active], sz, BufSize ); + m_lastBlock = LZ4_decompress_safe_continue( m_stream, m_lz4buf, m_buf[m_active], sz, BufSize ); } const auto sz = std::min( size, BufSize - m_offset ); @@ -84,6 +96,7 @@ private: char m_buf[2][BufSize]; size_t m_offset; uint8_t m_active; + int m_lastBlock; }; } |