Ejemplo n.º 1
0
            /// <summary>
            /// 开始接收表单数据
            /// </summary>
            /// <param name="loadForm">HTTP请求表单加载接口</param>
            public void Receive(requestForm.ILoadForm loadForm)
            {
                headerReceiver headerReceiver = socket.HeaderReceiver;
                requestHeader  requestHeader  = headerReceiver.RequestHeader;

                this.loadForm = loadForm;
                contentLength = requestHeader.ContentLength;
                if (contentLength < socket.Buffer.Length)
                {
                    buffer     = socket.Buffer;
                    memoryPool = null;
                }
                else
                {
                    memoryPool = getMemoryPool(contentLength + 1);
                    buffer     = memoryPool.Get(contentLength + 1);
                }
                receiveEndIndex = headerReceiver.ReceiveEndIndex - headerReceiver.HeaderEndIndex - sizeof(int);
                System.Buffer.BlockCopy(requestHeader.Buffer, headerReceiver.HeaderEndIndex + sizeof(int), buffer, 0, receiveEndIndex);
                headerReceiver.ReceiveEndIndex = headerReceiver.HeaderEndIndex;

                if (receiveEndIndex == contentLength)
                {
                    callback();
                }
                else
                {
                    receiveStartTime = date.nowTime.Now.AddTicks(date.SecondTicks);
                    receive();
                }
            }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取请求表单数据
        /// </summary>
        /// <param name="identity">HTTP操作标识</param>
        /// <param name="loadForm">HTTP请求表单加载接口</param>
        internal override void GetForm(long identity, requestForm.ILoadForm loadForm)
        {
            if (Interlocked.CompareExchange(ref this.identity, identity + 1, identity) == identity)
            {
                if (isLoadForm == 0)
                {
                    isLoadForm = 1;
                    if (check100Continue())
                    {
                        switch (RequestHeader.PostType)
                        {
                        case requestHeader.postType.Json:
                        case requestHeader.postType.Form:
                        case requestHeader.postType.Xml:
                        case requestHeader.postType.Data:
                            if (formReceiver == null)
                            {
                                formReceiver = new formIdentityReceiver(this);
                            }
                            formReceiver.Receive(loadForm);
                            return;

                        default:
                            if (boundaryReceiver == null)
                            {
                                boundaryReceiver = new boundaryIdentityReceiver(this);
                            }
                            boundaryReceiver.Receive(loadForm);
                            return;
                        }
                    }
                }
                else
                {
                    log.Error.Add("表单已加载", null, true);
                }
            }
            loadForm.OnGetForm(null);
        }
Ejemplo n.º 3
0
            /// <summary>
            /// 开始接收表单数据
            /// </summary>
            /// <param name="loadForm">HTTP请求表单加载接口</param>
            public void Receive(requestForm.ILoadForm loadForm)
            {
                this.loadForm = loadForm;
                try
                {
                    headerReceiver headerReceiver = socket.HeaderReceiver;
                    requestHeader  requestHeader  = headerReceiver.RequestHeader;
                    Buffer        = bigBuffers.Get();
                    boundary      = requestHeader.Boundary;
                    receiveLength = receiveEndIndex = headerReceiver.ReceiveEndIndex - headerReceiver.HeaderEndIndex - sizeof(int);
                    System.Buffer.BlockCopy(requestHeader.Buffer, headerReceiver.HeaderEndIndex + sizeof(int), Buffer, 0, receiveEndIndex);
                    headerReceiver.ReceiveEndIndex = headerReceiver.HeaderEndIndex;
                    contentLength = requestHeader.ContentLength;

                    receiveStartTime = date.nowTime.Now.AddTicks(date.SecondTicks);
                    onFirstBoundary();
                    return;
                }
                catch (Exception error)
                {
                    log.Error.Add(error, null, false);
                }
                this.error();
            }