Beispiel #1
0
        public void ValidateEvent(MediaStreamFsm.MediaEvent mediaEvent)
        {
            TsMediaStreamSource mediaStreamSource = this._mediaStreamSource;

            if (null == mediaStreamSource)
            {
                return;
            }
            mediaStreamSource.ValidateEvent(mediaEvent);
        }
Beispiel #2
0
        private MediaStreamFsm.MediaState?Find(MediaStreamFsm.MediaState source, MediaStreamFsm.MediaEvent mediaEvent)
        {
            Dictionary <MediaStreamFsm.MediaEvent, MediaStreamFsm.MediaState> dictionary;

            if (!MediaStreamFsm.ValidTransitions.TryGetValue(source, out dictionary))
            {
                return(new MediaStreamFsm.MediaState?());
            }
            MediaStreamFsm.MediaState mediaState;
            if (!dictionary.TryGetValue(mediaEvent, out mediaState))
            {
                return(new MediaStreamFsm.MediaState?());
            }
            return(new MediaStreamFsm.MediaState?(mediaState));
        }
Beispiel #3
0
        public void ValidateEvent(MediaStreamFsm.MediaEvent mediaEvent)
        {
            MediaStreamFsm.MediaState source = (MediaStreamFsm.MediaState) this._mediaState;
            MediaStreamFsm.MediaState?nullable;
            MediaStreamFsm.MediaState mediaState;
            while (true)
            {
                nullable = this.Find(source, mediaEvent);
                if (nullable.HasValue)
                {
                    mediaState = (MediaStreamFsm.MediaState)Interlocked.CompareExchange(ref this._mediaState, (int)nullable.Value, (int)source);
                    if (mediaState != source)
                    {
                        source = mediaState;
                    }
                    else
                    {
                        goto label_3;
                    }
                }
                else
                {
                    break;
                }
            }
            Debug.WriteLine(string.Format("ValidateEvent Invalid state transition: state {0} event {1}", new object[2]
            {
                (object)source,
                (object)mediaEvent
            }));
            return;

label_3:
            if (!MediaStreamFsm.NoisyLogging && mediaState == nullable.Value)
            {
                return;
            }
            Debug.WriteLine("Media {0}: {1} -> {2} at {3}", (object)mediaEvent, (object)mediaState, (object)nullable, (object)DateTimeOffset.Now);
        }
Beispiel #4
0
 public void ValidateEvent(MediaStreamFsm.MediaEvent mediaEvent);
Beispiel #5
0
 public void ValidateEvent(MediaStreamFsm.MediaEvent mediaEvent)
 {
     this._mediaStreamFsm.ValidateEvent(mediaEvent);
 }