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 <bartosz.taudul@game-lion.com>2018-04-20 15:27:20 +0300
committerBartosz Taudul <bartosz.taudul@game-lion.com>2018-04-20 15:27:20 +0300
commitcc65e52663623d5eee26068c42ad45f83061feef (patch)
tree4cd76a8dd9181b8f1915c49635d5f8ccd87e2fe5 /server/TracyFileRead.hpp
parent4eb205ad183dcc00f9bd6c2530d797566f21a05b (diff)
Allow skipping data when reading file.
Diffstat (limited to 'server/TracyFileRead.hpp')
-rw-r--r--server/TracyFileRead.hpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/server/TracyFileRead.hpp b/server/TracyFileRead.hpp
index a53342b5..45451b34 100644
--- a/server/TracyFileRead.hpp
+++ b/server/TracyFileRead.hpp
@@ -38,6 +38,34 @@ public:
}
}
+ void Skip( size_t size )
+ {
+ if( size <= BufSize - m_offset )
+ {
+ m_offset += size;
+ }
+ else
+ {
+ char m_lz4buf[LZ4Size];
+ while( size > 0 )
+ {
+ if( m_offset == BufSize )
+ {
+ m_active = 1 - m_active;
+ m_offset = 0;
+ uint32_t sz;
+ fread( &sz, 1, sizeof( sz ), m_file );
+ fread( m_lz4buf, 1, sz, m_file );
+ 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 );
+ m_offset += sz;
+ size -= sz;
+ }
+ }
+ }
+
bool IsEOF()
{
if( m_lastBlock != BufSize && m_offset == m_lastBlock ) return true;