コード例 #1
0
ファイル: FFHLSRunner.cs プロジェクト: spokanedj/remotepotato
 void processRemainingBytes()
 {
     while (byteHoldingBuffer.Count > 0)
     {
         if (bw.BaseStream.Position < MaxIncomingDataSize)
         {
             // dequeue the first byte (FIFO) and write it to disk
             bw.Write(byteHoldingBuffer[0]);
             byteHoldingBuffer.RemoveAt(0);
         }
         else
         {
             SendDebugMessage("WARNING: Data spill; segment exceeded max (" + MaxIncomingDataSize.ToString() + ") size.");
         }
     }
 }
コード例 #2
0
ファイル: FFHLSRunner.cs プロジェクト: spokanedj/remotepotato
        void processByte(byte b)
        {
            lock (byteHoldingBuffer)
            {
                byteHoldingBuffer.Add(b);
                if (byteHoldingBuffer.Count == delimiterLength)
                {
                    if (!startedPumping)
                    {
                        startedPumping = true;
                    }

                    // Check for a match - if it matches then dump the byte buffer and start a new file
                    if (byteHoldingBuffer.SequenceEqual(Delimiter))
                    {
                        byteHoldingBuffer.Clear();
                        AwaitingSegmentNumber++;
                        switchToNextSegment();
                    }
                    else
                    {
                        if (bw.BaseStream.Position < MaxIncomingDataSize)
                        {
                            // dequeue the first byte (FIFO) and write it to disk
                            bw.Write(byteHoldingBuffer[0]);
                            byteHoldingBuffer.RemoveAt(0);
                        }
                        else
                        {
                            SendDebugMessage("WARNING: Data spill; segment exceeded max (" + MaxIncomingDataSize.ToString() + ") size.");
                            return;
                        }
                    }
                }
            }
        }