MCPcopy Create free account
hub / github.com/alibaba/CicadaPlayer / RingBufferWriteData

Function RingBufferWriteData

framework/utils/ringBuffer.cpp:96–121  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

94}
95
96uint32_t RingBufferWriteData(RingBuffer *rBuf, const char *buf, uint32_t size)
97{
98 if (size > rBuf->m_size - rBuf->m_fillCount.load() - rBuf->m_backCount.load()) {
99 return 0;
100 }
101
102 if (size + rBuf->m_writePtr > rBuf->m_size) {
103 unsigned int chunk = rBuf->m_size - rBuf->m_writePtr;
104 memcpy(rBuf->m_buffer + rBuf->m_writePtr, buf, chunk);
105 memcpy(rBuf->m_buffer, buf + chunk, size - chunk);
106 rBuf->m_writePtr = size - chunk;
107 } else {
108 if ((rBuf->m_buffer + rBuf->m_writePtr) != buf) {
109 memcpy(rBuf->m_buffer + rBuf->m_writePtr, buf, size);
110 }
111
112 rBuf->m_writePtr += size;
113 }
114
115 if (rBuf->m_writePtr == rBuf->m_size) {
116 rBuf->m_writePtr = 0;
117 }
118
119 rBuf->m_fillCount += size;
120 return size;
121}
122
123int32_t RingBufferSkipBytes(RingBuffer *rBuf, int skipSize)
124{

Callers 3

write_callbackMethod · 0.85
FillBufferMethod · 0.85
write_callbackMethod · 0.85

Calls 1

loadMethod · 0.80

Tested by

no test coverage detected