CSharpRTMP.Core.Protocols.Rtmfp.Trigger.Start C# (CSharp) Метод

Start() публичный Метод

public Start ( ) : void
Результат void
        public void Start()
        {
            if (_stopwatch.IsRunning) return;
            _time = 0;
            _cycle = -1;
            _stopwatch.Start();
        }

Usage Example

Пример #1
0
        public void Flush(bool full = false)
        {
            //if (_messagesSent.Count > 100)
            //{

            //}

            var outputWriter = Band.Writer;
            var header       = !Band.CanWriterFollowing(this);

            while (_messages.Count > 0)
            {
                var message = _messages.Dequeue();
                if (message.Repeatable)
                {
                    ++_repeatable;
                    _trigger.Start();
                }
                uint fragments = 0;
                uint available;
                var  content = message.GetReader(out available);

                do
                {
                    ++_stage;
                    var outputBufferCount = outputWriter.AvaliableBufferCounts;
                    var headerSize        = (header && outputBufferCount < 62) ? HeaderSize(_stage) : 0;
                    var contentSize       = available;
                    if (outputBufferCount < headerSize + 12)
                    {
                        Band.Flush();
                        header            = true;
                        outputBufferCount = outputWriter.AvaliableBufferCounts;
                    }
                    headerSize = header ? (headerSize > 0 ? headerSize + 4 : HeaderSize(_stage) + 4) : 4;
                    byte flags = 0;
                    if (fragments > 0)
                    {
                        flags |= MESSAGE_WITH_BEFOREPART;
                    }
                    var head = header;
                    if (headerSize + contentSize > outputBufferCount)
                    {
                        flags      |= MESSAGE_WITH_AFTERPART;
                        contentSize = (uint)(outputBufferCount - headerSize);
                        header      = true;
                    }
                    else
                    {
                        header = false;
                    }
                    Flush(Band.WriteMessage((byte)(head ? 0x10 : 0x11), (ushort)(headerSize + contentSize - 3), this),
                          _stage, flags, head, content, (ushort)contentSize);
                    message.Fragments.Add(new Message.FragmentInfo(fragments, _stage));
                    available -= contentSize;
                    fragments += contentSize;
                } while (available > 0);
                _messagesSent.AddLast(message);
                // _messages.Remove(message);
            }
            if (full)
            {
                Band.Flush(true);
            }
        }