Major Update: (compiling but untested)
- Replace CBuffer with CRollingBuffer and CShiftBuffer ShiftBuffer is faster and simpler and always zero terminates - Updated SelectableCore to use RollingBuffer - Add Overwrite parameter to Push() and ReadFromFD() methods - Add PeakDirect() method for fast direct access to buffer
This commit is contained in:
@@ -299,7 +299,7 @@ bool CSelectableCore::SetBuffers( THandle * Handle, int InBufSize, int OutBufSiz
|
||||
Handle->InBuffer = NULL;
|
||||
}
|
||||
if (InBufSize) {
|
||||
Handle->InBuffer = new CBuffer( InBufSize );
|
||||
Handle->InBuffer = (CRollingBuffer*) new CRollingBuffer( InBufSize );
|
||||
}
|
||||
|
||||
// Output Buffer
|
||||
@@ -308,7 +308,7 @@ bool CSelectableCore::SetBuffers( THandle * Handle, int InBufSize, int OutBufSiz
|
||||
Handle->OutBuffer = NULL;
|
||||
}
|
||||
if (OutBufSize) {
|
||||
Handle->OutBuffer = new CBuffer( OutBufSize );
|
||||
Handle->OutBuffer = (CRollingBuffer*) new CRollingBuffer( OutBufSize );
|
||||
}
|
||||
|
||||
// Set Input Timeout
|
||||
@@ -1060,7 +1060,7 @@ bool CSelectableCore::ProcessBuffer( THandle * Handle, bool Force )
|
||||
while (Handle->InBuffer->FindStr( Handle->InMarker, Handle->InMarkerLen, Pos ))
|
||||
{
|
||||
// Show Packet
|
||||
Len = Handle->InBuffer->Peek( &Data, 0, Pos+1 );
|
||||
Len = Handle->InBuffer->Peek( &Data, 0, Pos+Handle->InMarkerLen+1 );
|
||||
if (Log) Log->Output( DebugLevel, dlHigh, OutputDisplay, Data, Len, "%s: Handle '%s' - IN-M:", Name, Handle->Name );
|
||||
|
||||
// Write buffer to Outputs
|
||||
@@ -1181,7 +1181,7 @@ int CSelectableCore::Input( const char * ChannelName, const char * Data, int Len
|
||||
if (ChildHandle->OutBuffer)
|
||||
{
|
||||
// Write to buffer
|
||||
BytesWritten = ChildHandle->OutBuffer->Push( Data, Len );
|
||||
BytesWritten = ChildHandle->OutBuffer->Push( true, Data, Len );
|
||||
|
||||
// Add to select write list
|
||||
if (BytesWritten) {
|
||||
@@ -1210,7 +1210,7 @@ int CSelectableCore::Input( const char * ChannelName, const char * Data, int Len
|
||||
if (Handle->OutBuffer)
|
||||
{
|
||||
// Write to buffer
|
||||
BytesWritten = Handle->OutBuffer->Push( Data, Len );
|
||||
BytesWritten = Handle->OutBuffer->Push( true, Data, Len );
|
||||
|
||||
// Add to select write list
|
||||
if (BytesWritten) {
|
||||
|
||||
Reference in New Issue
Block a user