void plRingBuffer::ForceWindowSlide() { int len = AmountBuffered(); if(len > 0 && fStartPos != 0) { memmove(fBuffer, GetBufferStart(), len); fStartPos = 0; fEndPos = len; } }
bool plRingBuffer::Get(char * data, int len) { bool ans = false; if (len < AmountBuffered()) { memcpy(data, GetBufferStart(), len); fStartPos += len; Compress(); ans = true; } return ans; }
int plBufferedSocketWriter::WriteBlock(const char * data, int len, plTcpSocket & sck) { int ans = kSuccessNoDataSent; if(len > BufferAvailable()) ans = Flush(sck); if(ans >= 0) ans = WriteBlock(data,len); if(ans >= 0 && fFlushPoint >= 0 && fFlushPoint < AmountBuffered()) ans = Flush(sck); return ans; }