예제 #1
0
        public CharBlock ReadChars(int length, Encoding encoding = null)
        {
            CharBlock block = CharBlock.Create(length);
            var       len   = ReadChars(block.Data, length, encoding);

            block.Count = len;
            return(block);
        }
예제 #2
0
 public bool TryReadLine(out CharBlock value, Encoding encoding, bool returnEof = false)
 {
     if (encoding == null)
     {
         encoding = Encoding;
     }
     return(TryReadWith(encoding.GetBytes("\r\n"), out value, encoding, returnEof));
 }
예제 #3
0
        public static CharBlock Create(int count)
        {
            CharBlock result = new CharBlock();

            result.Data = System.Buffers.ArrayPool <char> .Shared.Rent(count);

            result.Offset = 0;
            result.Count  = count;
            return(result);
        }
예제 #4
0
        public bool TryReadWith(byte[] eof, out CharBlock value, Encoding encoding, bool returnEof = false)
        {
            IndexOfResult result = IndexOf(eof);
            int           length = result.Length;

            if (result.End != null)
            {
                if (returnEof)
                {
                    value = ReadChars(length, encoding);
                }
                else
                {
                    value = ReadChars(length - eof.Length, encoding);
                    ReadFree(eof.Length);
                }
                return(true);
            }
            value = default;
            return(false);
        }