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

Method PopFirst

src/engine/shared/ringbuffer.cpp:137–165  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

135}
136
137int CRingBufferBase::PopFirst()
138{
139 if(m_pConsume->m_Free)
140 return 0;
141
142 if(m_PopCallback)
143 {
144 m_PopCallback(m_pConsume + 1);
145 }
146
147 // set the free flag
148 m_pConsume->m_Free = 1;
149
150 // previous block is also free, merge them
151 m_pConsume = MergeBack(m_pConsume);
152
153 // advance the consume pointer
154 m_pConsume = NextBlock(m_pConsume);
155 while(m_pConsume->m_Free && m_pConsume != m_pProduce)
156 {
157 m_pConsume = MergeBack(m_pConsume);
158 m_pConsume = NextBlock(m_pConsume);
159 }
160
161 // in the case that we have caught up with the produce pointer
162 // we might stand on a free block so merge em
163 MergeBack(m_pConsume);
164 return 1;
165}
166
167void *CRingBufferBase::Prev(void *pCurrent)
168{

Callers 4

websocket_recvFunction · 0.45
AckChunksMethod · 0.45
ResumeConnectionMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected