public void EndBufferIndex() { MemoryStream old = _buffer; _buffer = new MemoryStream(); int len; while ((len = old.Read(_buf, 0, 1024)) > 0) _buffer.Write(_buf, 0, len); old.Dispose(); }
public dynamic Decode(IChannel channel, PacketBuffer buffer) { buffer.BeginBufferIndex(); if (buffer.AvailableBytes() < 1) { buffer.ResetBufferIndex(); return null; } var data = new byte[buffer.AvailableBytes()]; buffer.ReadBytes(data); string s = System.Text.Encoding.UTF8.GetString(data); int len = s.IndexOf('\n'); if (len == -1) { buffer.ResetBufferIndex(); return null; } s = s.Substring(0, len + 1); buffer.SetPosition(System.Text.Encoding.UTF8.GetByteCount(s)); buffer.EndBufferIndex(); return s; }