public async void SyncData() { while (true) { var dest = GetPipeStream(); IBuffer buffer = BufferPoolGroup.DefaultGroup.Next().Pop(); try { int rlen = await ReadAsync(buffer.Data, 0, buffer.Size); if (rlen > 0) { buffer.SetLength(rlen); dest.Import(buffer); } else { buffer.Free(); break; } } catch (Exception e_) { SyncDataError = e_; buffer.Free(); break; } } }
private System.IO.Stream GetReader() { bool isnew; Connect(out isnew); IBuffer buffer = this.BufferPool.Pop(); try { ((Buffers.Buffer)buffer).From(Socket); if (buffer.Length == 0) { throw new SocketException((int)SocketError.Shutdown); } buffer.Postion = 0; System.Threading.Interlocked.Add(ref mReceiveBytes, buffer.Length); System.Threading.Interlocked.Increment(ref mReceiveQuantity); mBaseNetworkStream.Import(buffer); return(Stream); } catch (SocketException e_) { buffer.Free(); DisConnect(); throw e_; } }
public async void SyncData(Action receive) { while (true) { var dest = GetPipeStream(); IBuffer buffer = null; try { buffer = BufferPoolGroup.DefaultGroup.Next().Pop(); int rlen = await ReadAsync(buffer.Data, 0, buffer.Size); if (rlen > 0) { buffer.SetLength(rlen); dest.Import(buffer); } else { buffer.Free(); SyncDataError = new BXException("ssl receive null data!"); break; } } catch (Exception e_) { SyncDataError = e_; buffer?.Free(); break; } finally { receive?.Invoke(); } } }
private IBuffer GetReadBuffer() { if (_readerBuffer == null) { UpdateReadBuffer(); if (_readerBuffer == null) { return(null); } } if (_readerBuffer.Eof) { UpdateReadBuffer(); IBuffer buf = _readerBuffer; _readerBuffer = _readerBuffer.Next; _readerBuffer.RegisterReadAdvanceCompeleted(size => { Interlocked.Add(ref _length, -1 * size); }); _readerBuffer.Postion = 0; buf.Next = null; buf.Free(); } return(_readerBuffer); }
public static void ToPipeStream(Stream source, int length, PipeStream dest) { int rlen = 0; while (true) { IBuffer buffer = BufferPoolGroup.DefaultGroup.Next().Pop(); int offset = 0; int size = buffer.Size; int bufferlen = 0; NEXT: if (length > size) { rlen = source.Read(buffer.Data, offset, size); } else { rlen = source.Read(buffer.Data, offset, length); } if (rlen == 0) { if (bufferlen > 0) { buffer.SetLength(bufferlen); dest.Import(buffer); } else { buffer.Free(); } return; } bufferlen += rlen; offset += rlen; size -= rlen; length -= rlen; if (length == 0) { buffer.SetLength(bufferlen); dest.Import(buffer); return; } else { if (size > 0) { goto NEXT; } else { buffer.SetLength(bufferlen); dest.Import(buffer); } } } }
protected override void DisposeCode() { if (_writerBuffer != null) { _writerBuffer.Free(); } if (_writerLastBuffer != null) { _writerLastBuffer.Free(); } }
public void Receive(IBuffer buffer) { if (!mIsDisposed) { mBaseNetStream.Import(buffer); InvokeReceiveEvent(); } else { buffer.Free(); } }
protected override void DisposeCode() { UpdateReadBuffer(); if (_readerBuffer != null) { _readerBuffer.Free(); } if (_readerLastBuffer != null) { _readerLastBuffer.Free(); } }
private IBuffer GetReadBuffer() { if (mReadFirstBuffer == null) return null; if (mReadFirstBuffer.Eof) { using (mLockBuffer.Enter()) { IBuffer buf = mReadFirstBuffer; mReadFirstBuffer = mReadFirstBuffer.Next; buf.Next = null; buf.Free(); if (buf == mReadLastBuffer) mReadLastBuffer = null; } } return mReadFirstBuffer; }
private IBuffer GetReadBuffer() { if (mReadFirstBuffer == null) { return(null); } if (mReadFirstBuffer.Eof) { IBuffer buf = mReadFirstBuffer; mReadFirstBuffer = mReadFirstBuffer.Next; buf.Next = null; buf.Free(); if (buf == mReadLastBuffer) { mReadLastBuffer = null; } } return(mReadFirstBuffer); }
private IBuffer GetReadBuffer() { if (mReadFirstBuffer == null) { return(null); } if (mReadFirstBuffer.Eof) { //using (mLockBuffer.Enter()) //{ IBuffer buf = mReadFirstBuffer; mReadFirstBuffer = mReadFirstBuffer.Next; buf.Next = null; buf.Free(); if (buf == mReadLastBuffer) { mReadLastBuffer = null; } //} } return(mReadFirstBuffer); }