コード例 #1
0
ファイル: HTTPRequest.cs プロジェクト: L2N6H5B3/SoftSled2
        private void CloseSink(HTTPSession ss)
        {
            bool   flag = false;
            string str  = "";

            ss.CancelAllEvents();
            lock (this.TagQueue)
            {
                KeepAliveTimer.Remove(this.GetHashCode());
                if (this.TagQueue.Count > 0)
                {
                    EventLogger.Log(this, EventLogEntryType.Information, "Switching Pipeline Modes [" + ss.GetHashCode().ToString() + "]");
                    this._PIPELINE = false;
                    if (!this.ReceivedFirstResponse)
                    {
                        str = ((StateData)this.TagQueue.Peek()).Dest.ToString();
                    }
                }
                if (!this.ReceivedFirstResponse)
                {
                    EventLogger.Log(this, EventLogEntryType.Error, "Server[" + str + "] closed socket without answering");
                    flag = true;
                }
                while (this.TagQueue.Count > 0)
                {
                    StateData data = (StateData)this.TagQueue.Dequeue();
                    if (!flag)
                    {
                        HTTPRequest request = new HTTPRequest();
                        request.ProxySetting = this.ProxySetting;
                        request._PIPELINE    = true;
                        if (this.OnSniff != null)
                        {
                            request.OnSniff = (SniffHandler)Delegate.Combine(request.OnSniff, new SniffHandler(this.NonPipelinedSniffSink));
                        }
                        if (this.OnSniffPacket != null)
                        {
                            request.OnSniffPacket = (RequestHandler)Delegate.Combine(request.OnSniffPacket, new RequestHandler(this.NonPipelinedSniffPacketSink));
                        }
                        request.OnResponse = (RequestHandler)Delegate.Combine(request.OnResponse, new RequestHandler(this.NonPipelinedResponseSink));
                        this.NotPipelinedTable[request] = request;
                        request.PipelineRequest(data.Dest, data.Request, data.Tag);
                    }
                    else if (this.OnResponse != null)
                    {
                        this.OnResponse(this, null, data.Tag);
                    }
                }
                this.s = null;
            }
        }
コード例 #2
0
ファイル: HTTPRequest.cs プロジェクト: sqirrel99/FreeMi
        private void CloseSink(HTTPSession ss)
        {
            bool   err     = false;
            string erraddr = "";

            ss.CancelAllEvents();
            lock (TagQueue)
            {
                KeepAliveTimer.Remove(this.GetHashCode());

                if (TagQueue.Count > 0)
                {
                    OpenSource.Utilities.EventLogger.Log(this, System.Diagnostics.EventLogEntryType.Information, "Switching Pipeline Modes [" + ss.GetHashCode().ToString() + "]");
                    _PIPELINE = false;
                    if (!ReceivedFirstResponse)
                    {
                        erraddr = ((StateData)TagQueue.Peek()).Dest.ToString();
                    }
                }

                if (!ReceivedFirstResponse)
                {
                    OpenSource.Utilities.EventLogger.Log(this, System.Diagnostics.EventLogEntryType.Error, "Server[" + erraddr + "] closed socket without answering");
                    err = true;
                }

                while (TagQueue.Count > 0)
                {
                    StateData sd = (StateData)TagQueue.Dequeue();
                    if (!err)
                    {
                        HTTPRequest TR = new HTTPRequest();
                        TR.ProxySetting = ProxySetting;
                        TR._PIPELINE    = true;
                        if (this.OnSniff != null)
                        {
                            TR.OnSniff += new HTTPRequest.SniffHandler(NonPipelinedSniffSink);
                        }
                        if (this.OnSniffPacket != null)
                        {
                            TR.OnSniffPacket += new HTTPRequest.RequestHandler(NonPipelinedSniffPacketSink);
                        }
                        TR.OnResponse += new HTTPRequest.RequestHandler(NonPipelinedResponseSink);
                        this.NotPipelinedTable[TR] = TR;
                        TR.PipelineRequest(sd.Dest, sd.Request, sd.Tag);
                    }
                    else
                    {
                        if (OnResponse != null)
                        {
                            OnResponse(this, null, sd.Tag);
                        }
                    }
                }
                s = null;
            }
        }