Exemplo n.º 1
0
        public virtual TimeSpan?Update(MetadataState state, TimeSpan position)
        {
            bool   lockTaken = false;
            object obj;

            try
            {
                Monitor.Enter(obj = this._lock, ref lockTaken);
                this._position    = position;
                TimeSpan?        nullable1       = this.ProcessPendingTracks();
                IStreamMetadata  streamMetadata  = this._metadataState.StreamMetadata;
                ISegmentMetadata segmentMetadata = this._metadataState.SegmentMetadata;
                state.SegmentMetadata       = segmentMetadata;
                state.SegmentTimestamp      = this._metadataState.SegmentTimestamp;
                state.StreamMetadata        = streamMetadata;
                state.StreamTimestamp       = this._metadataState.StreamTimestamp;
                state.TrackMetadata         = this._metadataState.TrackMetadata;
                state.ConfigurationMetadata = this._metadataState.ConfigurationMetadata;
                int num1;
                if (this._metadataState.StreamTimestamp > this._position)
                {
                    TimeSpan streamTimestamp = this._metadataState.StreamTimestamp;
                    TimeSpan?nullable2       = nullable1;
                    num1 = (nullable2.HasValue ? (streamTimestamp < nullable2.GetValueOrDefault() ? 1 : 0) : 0) == 0 ? 1 : 0;
                }
                else
                {
                    num1 = 1;
                }
                if (num1 == 0)
                {
                    nullable1 = new TimeSpan?(this._metadataState.StreamTimestamp);
                }
                int num2;
                if (this._metadataState.SegmentTimestamp > this._position)
                {
                    TimeSpan segmentTimestamp = this._metadataState.SegmentTimestamp;
                    TimeSpan?nullable2        = nullable1;
                    num2 = (nullable2.HasValue ? (segmentTimestamp < nullable2.GetValueOrDefault() ? 1 : 0) : 0) == 0 ? 1 : 0;
                }
                else
                {
                    num2 = 1;
                }
                if (num2 == 0)
                {
                    nullable1 = new TimeSpan?(this._metadataState.SegmentTimestamp);
                }
                return(nullable1);
            }
            finally
            {
                if (lockTaken)
                {
                    Monitor.Exit(obj);
                }
            }
        }
Exemplo n.º 2
0
        public virtual TimeSpan? Update(MetadataState state, TimeSpan position)
        {
            lock (_lock)
            {
                _position = position;

                var nextEvent = ProcessPendingTracks();

                var streamMetadata = _metadataState.StreamMetadata;

                var segmentMetadata = _metadataState.SegmentMetadata;

                state.SegmentMetadata = segmentMetadata;
                state.SegmentTimestamp = _metadataState.SegmentTimestamp;
                state.StreamMetadata = streamMetadata;
                state.StreamTimestamp = _metadataState.StreamTimestamp;
                state.TrackMetadata = _metadataState.TrackMetadata;
                state.ConfigurationMetadata = _metadataState.ConfigurationMetadata;

                if (_metadataState.StreamTimestamp > _position && _metadataState.StreamTimestamp < nextEvent)
                    nextEvent = _metadataState.StreamTimestamp;

                if (_metadataState.SegmentTimestamp > _position && _metadataState.SegmentTimestamp < nextEvent)
                    nextEvent = _metadataState.SegmentTimestamp;

                return nextEvent;
            }
        }