MCPcopy Create free account
hub / github.com/ddnet/ddnet / FlushChunk

Method FlushChunk

src/engine/client/ghost.cpp:131–171  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

129}
130
131void CGhostRecorder::FlushChunk()
132{
133 dbg_assert((bool)m_File, "File not open");
134
135 int Size = m_pBufferPos - m_aBuffer;
136 if(Size == 0 || m_BufferNumItems == 0)
137 {
138 return;
139 }
140 dbg_assert(Size % sizeof(uint32_t) == 0, "Chunk size invalid");
141
142 Size = CVariableInt::Compress(m_aBuffer, Size, m_aBufferTemp, sizeof(m_aBufferTemp));
143 if(Size < 0)
144 {
145 log_info_color(LOG_COLOR_GHOST, "ghost_recorder", "Failed to write chunk to '%s': error during intpack compression", m_aFilename);
146 m_LastItem.Reset();
147 ResetBuffer();
148 return;
149 }
150
151 Size = CNetBase::Compress(m_aBufferTemp, Size, m_aBuffer, sizeof(m_aBuffer));
152 if(Size < 0)
153 {
154 log_info_color(LOG_COLOR_GHOST, "ghost_recorder", "Failed to write chunk to '%s': error during network compression", m_aFilename);
155 m_LastItem.Reset();
156 ResetBuffer();
157 return;
158 }
159
160 unsigned char aChunkHeader[4];
161 aChunkHeader[0] = m_LastItem.m_Type & 0xff;
162 aChunkHeader[1] = m_BufferNumItems & 0xff;
163 aChunkHeader[2] = (Size >> 8) & 0xff;
164 aChunkHeader[3] = Size & 0xff;
165
166 io_write(m_File, aChunkHeader, sizeof(aChunkHeader));
167 io_write(m_File, m_aBuffer, Size);
168
169 m_LastItem.Reset();
170 ResetBuffer();
171}
172
173void CGhostRecorder::Stop(int Ticks, int Time)
174{

Callers

nothing calls this directly

Calls 2

io_writeFunction · 0.85
ResetMethod · 0.45

Tested by

no test coverage detected