/// <summary> /// 输出HTTP响应数据 /// </summary> /// <param name="identity">HTTP操作标识</param> /// <param name="response">HTTP响应数据</param> public override unsafe bool Response(long identity, ref response response) { if (Interlocked.CompareExchange(ref this.identity, identity + 1, identity) == identity) { this.response = response; response = null; if (this.response.LastModified != null) { subArray <byte> ifModifiedSince = RequestHeader.IfModifiedSince; if (ifModifiedSince.length == this.response.LastModified.Length) { fixed(byte *buffer = ifModifiedSince.array) { if (unsafer.memory.Equal(this.response.LastModified, buffer + ifModifiedSince.startIndex, ifModifiedSince.length)) { response.Push(ref this.response); this.response = response.NotChanged304; } } } } if (boundaryReceiver != null) { bigBuffers.Push(ref boundaryReceiver.Buffer); } if (RequestHeader.Method == fastCSharp.web.http.methodType.POST && isLoadForm == 0) { 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(this); return(true); default: if (boundaryReceiver == null) { boundaryReceiver = new boundaryIdentityReceiver(this); } boundaryReceiver.Receive(this); return(true); } } responseHeader(); return(true); } response.Push(ref response); return(false); }
/// <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); }