コード例 #1
0
ファイル: BaseWebSocket.cs プロジェクト: schlndh/netool
 public BaseWebSocket(InstanceLogger logger)
 {
     if (logger == null)
     {
         throw new ArgumentNullException("logger");
     }
     this.logger = logger;
     dataBuilder = new ThresholdedDataBuilder(logger);
 }
コード例 #2
0
ファイル: BaseWebSocket.cs プロジェクト: schlndh/netool
 /// <summary>
 /// Push new data into the parser
 /// </summary>
 /// <param name="s"></param>
 public void Receive(IDataStream s)
 {
     lock (contentLock)
     {
         while (s.Length > 0)
         {
             while (!readingPayload && s.Length > 0)
             {
                 missing = parser.ParseHeader(s);
                 if (missing <= 0)
                 {
                     var inner = s;
                     if (missing < 0)
                     {
                         var split = s.Length + missing;
                         inner = new StreamSegment(s, 0, split);
                         s     = new StreamSegment(s, split);
                     }
                     else
                     {
                         s = EmptyData.Instance;
                     }
                     var ret = parser.Close(inner);
                     parser = new WebSocketMessage.Parser();
                     onMessageParsed(ret);
                 }
                 else
                 {
                     readingPayload = true;
                     dataBuilder.Append(s);
                     return;
                 }
             }
             if (readingPayload)
             {
                 if (s.Length < missing)
                 {
                     dataBuilder.Append(s);
                     missing -= s.Length;
                     return;
                 }
                 else
                 {
                     dataBuilder.Append(new StreamSegment(s, 0, missing));
                     s              = new StreamSegment(s, missing);
                     missing        = 0;
                     readingPayload = false;
                     var bin = dataBuilder.Close();
                     dataBuilder = new ThresholdedDataBuilder(logger);
                     var msg = parser.Close(bin);
                     parser = new WebSocketMessage.Parser();
                     onMessageParsed(msg);
                 }
             }
         }
     }
 }
コード例 #3
0
ファイル: HttpMessageParser.cs プロジェクト: schlndh/netool
 public HttpMessageParser(InstanceLogger logger, bool isResponse)
 {
     if (logger == null)
     {
         throw new ArgumentNullException("logger");
     }
     this.logger     = logger;
     this.isResponse = isResponse;
     dataBuilder     = new ThresholdedDataBuilder(logger);
 }