| 138 | } |
| 139 | |
| 140 | void StreamingBuffer::pushFront( const void *data, size_t dataSize ) |
| 141 | { |
| 142 | std::lock_guard<std::mutex> lock( mMutex ); |
| 143 | size_t offset = 0; |
| 144 | |
| 145 | while( offset < dataSize ) { |
| 146 | size_t copyCount = std::min( dataSize - offset, mBlockSize - mWriteOffset ); |
| 147 | memcpy( &mBlocks.back()[mWriteOffset], &reinterpret_cast<const uint8_t*>(data)[offset], copyCount ); |
| 148 | offset += copyCount; |
| 149 | mWriteOffset += copyCount; |
| 150 | if( mWriteOffset == mBlockSize ) |
| 151 | allocateNewWriteBlock(); |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | size_t StreamingBuffer::popBack( void *output, size_t maxSize ) |
| 156 | { |