Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Taudul <wolf.pld@gmail.com>2018-04-02 02:54:25 +0300
committerBartosz Taudul <wolf.pld@gmail.com>2018-04-02 03:05:39 +0300
commit68acc30bdd44773ce2454ad2eeafdd60f21c2cff (patch)
treed5390a6bca1a0ef08075ec267487d3308a3fbfa8 /server/TracyFileRead.hpp
parent5824b47a6660376969c4391f8b2ea4fd9caa5dba (diff)
Add support for determining FileRead EOF.
Diffstat (limited to 'server/TracyFileRead.hpp')
-rw-r--r--server/TracyFileRead.hpp15
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;
};
}