123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #if (!UNITY_WEBGL || UNITY_EDITOR) && !BESTHTTP_DISABLE_ALTERNATE_SSL && !BESTHTTP_DISABLE_HTTP2 && !BESTHTTP_DISABLE_WEBSOCKET
- using System;
- using System.Collections.Generic;
- using System.IO;
- using BestHTTP.Extensions;
- using BestHTTP.PlatformSupport.Memory;
- namespace BestHTTP.WebSocket.Implementations.Utils
- {
- public sealed class LockedBufferSegmenStream : BufferSegmentStream
- {
- public bool IsClosed { get; private set; }
- public override int Read(byte[] buffer, int offset, int count)
- {
- lock (base.bufferList)
- {
- if (this.IsClosed && base.bufferList.Count == 0)
- return 0;
- int sumReadCount = base.Read(buffer, offset, count);
- return sumReadCount == 0 ? -1 : sumReadCount;
- }
- }
- public override void Write(BufferSegment bufferSegment)
- {
- lock (base.bufferList)
- {
- if (this.IsClosed)
- return;
- base.Write(bufferSegment);
- }
- }
- public override void Reset()
- {
- lock (base.bufferList)
- {
- base.Reset();
- }
- }
- protected override void Dispose(bool disposing)
- {
- base.Dispose(disposing);
- Reset();
- }
- public override void Close()
- {
- this.IsClosed = true;
- }
- }
- }
- #endif
|