123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- using System;
- using System.IO;
- namespace Org.BouncyCastle.Crypto.Tls
- {
- public class ByteQueueStream
- : Stream
- {
- private readonly ByteQueue buffer;
- public ByteQueueStream()
- {
- this.buffer = new ByteQueue();
- }
- public virtual int Available
- {
- get { return buffer.Available; }
- }
- public override bool CanRead
- {
- get { return true; }
- }
- public override bool CanSeek
- {
- get { return false; }
- }
- public override bool CanWrite
- {
- get { return true; }
- }
- public override void Flush()
- {
- }
- public override long Length
- {
- get { throw new NotSupportedException(); }
- }
- public virtual int Peek(byte[] buf)
- {
- int bytesToRead = System.Math.Min(buffer.Available, buf.Length);
- buffer.Read(buf, 0, bytesToRead, 0);
- return bytesToRead;
- }
- public override long Position
- {
- get { throw new NotSupportedException(); }
- set { throw new NotSupportedException(); }
- }
- public virtual int Read(byte[] buf)
- {
- return Read(buf, 0, buf.Length);
- }
- public override int Read(byte[] buf, int off, int len)
- {
- int bytesToRead = System.Math.Min(buffer.Available, len);
- buffer.RemoveData(buf, off, bytesToRead, 0);
- return bytesToRead;
- }
- public override int ReadByte()
- {
- if (buffer.Available == 0)
- return -1;
- return buffer.RemoveData(1, 0)[0] & 0xFF;
- }
- public override long Seek(long offset, SeekOrigin origin)
- {
- throw new NotSupportedException();
- }
- public override void SetLength(long value)
- {
- throw new NotSupportedException();
- }
- public virtual int Skip(int n)
- {
- int bytesToSkip = System.Math.Min(buffer.Available, n);
- buffer.RemoveData(bytesToSkip);
- return bytesToSkip;
- }
- public virtual void Write(byte[] buf)
- {
- buffer.AddData(buf, 0, buf.Length);
- }
- public override void Write(byte[] buf, int off, int len)
- {
- buffer.AddData(buf, off, len);
- }
- public override void WriteByte(byte b)
- {
- buffer.AddData(new byte[]{ b }, 0, 1);
- }
- }
- }
- #endif
|