public String Read(ChannelBuffer buf, byte separator) { int count = buf.BytesBefore(separator); if (count < 0) { return(null); } byte[] data = new byte[count]; buf.ReadBytes(data); buf.ReadByte(); // get rid of separator return(Encoding.UTF8.GetString(data)); }
public String ReadRaw(ChannelBuffer buf, byte separator) { int count = buf.BytesBefore(separator); if (count < 0) { return(null); } byte[] data = new byte[count]; buf.ReadBytes(data); buf.ReadByte(); // get rid of separator int length = data.Length; for (int i = 0; i < length; i++) { if (data[i] == '\\') { if (i + 1 < length) { byte b = data[i + 1]; if (b == 't') { data[i] = (byte)'\t'; } else if (b == 'r') { data[i] = (byte)'\r'; } else if (b == 'n') { data[i] = (byte)'\n'; } else { data[i] = b; } Array.Copy(data, i + 2, data, i + 1, length - i - 2); length--; } } } return(Encoding.UTF8.GetString(data, 0, length)); }