Пример #1
0
 private void _ParseAndSendServerMessages()
 {
     WebSocketMessage[] array  = WebSocket._ParseMessagesFromStream(this, ref this.strmServerBytes, false, true);
     WebSocketMessage[] array2 = array;
     for (int i = 0; i < array2.Length; i++)
     {
         WebSocketMessage webSocketMessage = array2[i];
         webSocketMessage.Timers.dtDoneRead = DateTime.Now;
         List <WebSocketMessage> obj;
         Monitor.Enter(obj = this.listMessages);
         try
         {
             this.listMessages.Add(webSocketMessage);
         }
         finally
         {
             Monitor.Exit(obj);
         }
         FiddlerApplication.DoOnWebSocketMessage(this._mySession, webSocketMessage);
         if (!webSocketMessage.WasAborted)
         {
             webSocketMessage.Timers.dtBeginSend = DateTime.Now;
             this.oCP.Send(webSocketMessage.ToByteArray());
             webSocketMessage.Timers.dtDoneSend = DateTime.Now;
         }
     }
 }
Пример #2
0
        internal bool ReadWebSocketMessageListFromStream(Stream oFS)
        {
            bool result;

            try
            {
                string[] array = WebSocket._ReadHeadersFromStream(oFS);
                List <WebSocketMessage> list = new List <WebSocketMessage>();
                array = WebSocket._ReadHeadersFromStream(oFS);
                while (array != null && array.Length > 0)
                {
                    int      num         = 0;
                    bool     bIsOutbound = false;
                    DateTime dtDoneRead  = new DateTime(0L);
                    DateTime dtBeginSend = new DateTime(0L);
                    DateTime dtDoneSend  = new DateTime(0L);
                    string[] array2      = array;
                    for (int i = 0; i < array2.Length; i++)
                    {
                        string text = array2[i];
                        if (text.StartsWith("Request-Length:"))
                        {
                            bIsOutbound = true;
                            num         = int.Parse(text.Substring(16));
                        }
                        if (text.StartsWith("Response-Length:"))
                        {
                            bIsOutbound = false;
                            num         = int.Parse(text.Substring(17));
                        }
                        if (text.StartsWith("DoneRead:"))
                        {
                            dtDoneRead = WebSocket._GetDateTime(text.Substring(10));
                        }
                        if (text.StartsWith("BeginSend:"))
                        {
                            dtBeginSend = WebSocket._GetDateTime(text.Substring(11));
                        }
                        if (text.StartsWith("DoneSend:"))
                        {
                            dtDoneSend = WebSocket._GetDateTime(text.Substring(10));
                        }
                    }
                    if (num < 1)
                    {
                        throw new InvalidDataException("Missing size indication.");
                    }
                    byte[] buffer = new byte[num];
                    oFS.Read(buffer, 0, num);
                    MemoryStream       memoryStream = new MemoryStream(buffer);
                    WebSocketMessage[] array3       = WebSocket._ParseMessagesFromStream(this, ref memoryStream, bIsOutbound, false);
                    if (array3.Length == 1)
                    {
                        if (dtDoneRead.Ticks > 0L)
                        {
                            array3[0].Timers.dtDoneRead = dtDoneRead;
                        }
                        if (dtBeginSend.Ticks > 0L)
                        {
                            array3[0].Timers.dtBeginSend = dtBeginSend;
                        }
                        if (dtDoneSend.Ticks > 0L)
                        {
                            array3[0].Timers.dtDoneSend = dtDoneSend;
                        }
                        list.Add(array3[0]);
                    }
                    if (-1 != oFS.ReadByte())
                    {
                        if (-1 != oFS.ReadByte())
                        {
                            array = WebSocket._ReadHeadersFromStream(oFS);
                            continue;
                        }
                    }
                    array = null;
                }
                this.listMessages = list;
                result            = true;
            }
            catch (Exception)
            {
                result = false;
            }
            return(result);
        }