コード例 #1
0
ファイル: Receiver.cs プロジェクト: dotnatcore/dotvuecore
        private async Task SendRawAsync(RawSendType type, ArraySegment <byte> buffer, CancellationToken cancellationToken)
        {
            if (_state != State.Open)
            {
                throw new InvalidOperationException("Cannot send on closed receiver");
            }

            if (buffer.Count == 0)
            {
                return;
            }

            try
            {
                if (_type == ReceiverType.XhrPolling)
                {
                    _context.Response.ContentLength = buffer.Count;
                }
                await _context.Response.Body.WriteAsync(buffer.Array, buffer.Offset, buffer.Count, cancellationToken);

                await _context.Response.Body.FlushAsync(cancellationToken);

                if (type != RawSendType.Header)
                {
                    _bytesSent += buffer.Count;
                }
                if ((_type == ReceiverType.XhrPolling) || (type == RawSendType.Close) || (_bytesSent >= _maxResponseLength))
                {
                    _state = State.Closed;
                }
            }
            catch
            {
                _state = State.Closed;
                throw;
            }
        }
コード例 #2
0
ファイル: Receiver.cs プロジェクト: tmds/Tmds.SockJS
        private async Task SendRawAsync(RawSendType type, ArraySegment<byte> buffer, CancellationToken cancellationToken)
        {
            if (_state != State.Open)
            {
                throw new InvalidOperationException("Cannot send on closed receiver");
            }

            if (buffer.Count == 0)
            {
                return;
            }

            try
            {
                if (_type == ReceiverType.XhrPolling)
                {
                    _context.Response.ContentLength = buffer.Count;
                }
                await _context.Response.Body.WriteAsync(buffer.Array, buffer.Offset, buffer.Count, cancellationToken);
                await _context.Response.Body.FlushAsync(cancellationToken);
                if (type != RawSendType.Header)
                {
                    _bytesSent += buffer.Count;
                }
                if ((_type == ReceiverType.XhrPolling) || (type == RawSendType.Close) || (_bytesSent >= _maxResponseLength))
                {
                    _state = State.Closed;
                }
            }
            catch
            {
                _state = State.Closed;
                throw;
            }
        }
コード例 #3
0
ファイル: Receiver.cs プロジェクト: dotnatcore/dotvuecore
 private Task SendRawAsync(RawSendType type, byte[] buffer, CancellationToken cancellationToken)
 {
     return(SendRawAsync(type, new ArraySegment <byte>(buffer), cancellationToken));
 }
コード例 #4
0
ファイル: Receiver.cs プロジェクト: tmds/Tmds.SockJS
 private Task SendRawAsync(RawSendType type, byte[] buffer, CancellationToken cancellationToken)
 {
     return SendRawAsync(type, new ArraySegment<byte>(buffer), cancellationToken);
 }