public bool StartRead(ref ArraySegment <byte> buffer, ref int offset, ZeroC.Ice.AsyncCallback callback, object state) { if (_configuration.ReadReady()) { _configuration.CheckReadException(); // Only raise if we're configured to read now. } if (_buffered) { int available = _readBufferOffset - _readBufferPos; if (available > 0) { int requested = buffer.Count - offset; if (available >= requested) { available = requested; } _readBuffer.Slice(_readBufferPos, available).CopyTo(buffer.Slice(offset)); offset += available; _readBufferPos += available; } if (_readBufferPos == _readBufferOffset && offset < buffer.Count) { _readBufferPos = 0; _readBufferOffset = 0; return(_transceiver.StartRead(ref _readBuffer, ref _readBufferOffset, callback, state)); } else { TestHelper.Assert(offset == buffer.Count); return(true); // Completed synchronously } } else { return(_transceiver.StartRead(ref buffer, ref offset, callback, state)); } }
public bool StartWrite(IList <ArraySegment <byte> > buf, int offset, ZeroC.Ice.AsyncCallback callback, object state, out bool completed) { _configuration.CheckWriteException(); return(_transceiver.StartWrite(buf, offset, callback, state, out completed)); }