Griffin.Net.Protocols.Http.HttpMessageEncoder.Send C# (CSharp) Метод

Send() публичный Метод

Buffer structure used for socket send operations.
public Send ( ISocketBuffer buffer ) : void
buffer ISocketBuffer /// Do note that there are not buffer attached to the structure, you have to assign one yourself using /// . This choice was made /// to prevent unnecessary copy operations. ///
Результат void
        public void Send(ISocketBuffer buffer)
        {
            // last send operation did not send all bytes enqueued in the buffer
            // so let's just continue until doing next message
            if (_bytesToSend > 0)
            {
                buffer.SetBuffer(_buffer, _offset, _bytesToSend);
                return;
            }

            // continuing with the message body
            if (_isHeaderSent)
            {
                var bytes = Math.Min(_totalAmountToSend, _buffer.Length);
                _message.Body.Read(_buffer, 0, bytes);
                _bytesToSend = bytes;

                buffer.SetBuffer(_buffer, 0, bytes);
                return;
            }

            _headerWriter.WriteLine(_message.StatusLine);
            foreach (var header in _message.Headers)
            {
                _headerWriter.Write("{0}: {1}\r\n", header.Key, header.Value);
            }
            _headerWriter.Write("\r\n");
            _headerWriter.Flush();
            _isHeaderSent = true;
            buffer.UserToken = _message;

            if (_message.Body == null || _message.ContentLength == 0)
            {
                _bytesToSend = (int) _stream.Length;
                _totalAmountToSend = _bytesToSend;
                buffer.SetBuffer(_buffer, 0, (int) _stream.Length);
                return;
            }
            else
            {
                
            }

            var bytesLeft = _buffer.Length - _stream.Length;
            var bytesToSend = Math.Min(_message.ContentLength, (int) bytesLeft);
            var offset = (int) _stream.Position;
            _message.Body.Read(_buffer, offset, bytesToSend);
            _bytesToSend = (int) _stream.Length + bytesToSend;
            _totalAmountToSend = (int) _stream.Length + _message.ContentLength;
            buffer.SetBuffer(_buffer, 0, _bytesToSend);
        }

Usage Example

Пример #1
0
        public void basic_response()
        {
            var frame = new HttpResponse(404, "Failed to find it dude", "HTTP/1.1");
            var expected = "HTTP/1.1 404 Failed to find it dude\r\n";
            var buffer = new SocketBufferFake();

            var encoder = new HttpMessageEncoder();
            encoder.Prepare(frame);
            encoder.Send(buffer);
            var actual = Encoding.ASCII.GetString(buffer.Buffer, 0, buffer.Count);

            actual.Substring(0,expected.Length).Should().Be(expected);
        }
All Usage Examples Of Griffin.Net.Protocols.Http.HttpMessageEncoder::Send