示例#1
0
        public void WriteMetadata(WriteCallback callback)
        {
            if (pending_length_cbs > 0)
            {
                return;
            }

            if (AddHeaders)
            {
                if (chunk_encode)
                {
                    HttpEntity.Headers.SetNormalizedHeader("Transfer-Encoding", "chunked");
                }
                else
                {
                    HttpEntity.Headers.ContentLength = Length;
                }
            }

            StringBuilder builder = new StringBuilder();

            HttpEntity.WriteMetadata(builder);

            byte [] data = Encoding.ASCII.GetBytes(builder.ToString());

            metadata_written = true;

            var bytes = new List <ByteBuffer> ();

            bytes.Add(new ByteBuffer(data, 0, data.Length));
            var write_bytes = new SendBytesOperation(bytes.ToArray(), callback);

            SocketStream.QueueWriteOperation(write_bytes);
        }
示例#2
0
        private void QueueWriteOperation(IWriteOperation op)
        {
            if (chunk_encode)
            {
                SocketStream.QueueWriteOperation(op);
                return;
            }

            if (write_ops == null)
            {
                write_ops = new Queue <IWriteOperation> ();
            }

            write_ops.Enqueue(op);
        }
示例#3
0
        public void SendBufferedOps(WriteCallback callback)
        {
            if (write_ops != null)
            {
                IWriteOperation [] ops = write_ops.ToArray();

                for (int i = 0; i < ops.Length; i++)
                {
                    SocketStream.QueueWriteOperation(ops [i]);
                }
                write_ops.Clear();
            }

            SocketStream.QueueWriteOperation(new NopWriteOperation(callback));
        }
示例#4
0
        public void WriteMetadata(WriteCallback callback)
        {
            StringBuilder builder = new StringBuilder();

            HttpEntity.WriteMetadata(builder);

            byte [] data = Encoding.ASCII.GetBytes(builder.ToString());

            metadata_written = true;

            var bytes = new List <ArraySegment <byte> > ();

            bytes.Add(new ArraySegment <byte> (data, 0, data.Length));
            var write_bytes = new SendBytesOperation(bytes, callback);

            SocketStream.QueueWriteOperation(write_bytes);
        }