//Connected and streaming state - all messages should be processed
        private void Streaming()
        {
            State = StreamListenerState.Streaming;

            _logger.Info($"Stream listener for {_resource} moved to Streaming State");

            Receive <SuspendAndReprocessSnapshotMsg>(a => SuspendAndReprocessSnapshot());
            Receive <StreamDisconnectedMsg>(a => StreamDisconnectedMsgHandler(a));
            Receive <StopStreamingMsg>(a => StopStreaming());
            Receive <StreamUpdateMsg>(a => StreamUpdateHandler(a));
            Receive <StreamHealthCheckMsg>(a => StreamHealthCheckMsgHandler(a));
            Receive <RetrieveAndProcessSnapshotMsg>(a => RetrieveAndProcessSnapshot(false, true));
            Receive <ClearFixtureStateMsg>(a => ClearState(true));
            Receive <GetStreamListenerActorStateMsg>(a => Sender.Tell(State));

            try
            {
                var streamConnectedMsg =
                    new StreamConnectedMsg
                {
                    FixtureId     = _fixtureId,
                    FixtureStatus = _resource.MatchStatus.ToString()
                };
                _streamHealthCheckActor.Tell(streamConnectedMsg);

                var fixtureStateActor = Context.System.ActorSelection(FixtureStateActor.Path);
                var fixtureState      =
                    fixtureStateActor
                    .Ask <FixtureState>(
                        new GetFixtureStateMsg {
                    FixtureId = _fixtureId
                },
                        TimeSpan.FromSeconds(10))
                    .Result;

                if (_fixtureValidation.IsSnapshotNeeded(_resource, fixtureState))
                {
                    RetrieveAndProcessSnapshot();
                }
                else
                {
                    UnsuspendFixture(fixtureState);
                }

                Stash.UnstashAll();
                Context.Parent.Tell(streamConnectedMsg);
                _isInitializing = false;
            }
            catch (Exception ex)
            {
                _logger.Error(
                    $"Failed moving to Streaming State for {_resource} - exception - {ex}");
                _erroredException = ex;
                Become(Errored);
            }
        }
        private void StreamConnectedMsgHandler(StreamConnectedMsg msg)
        {
            IActorRef streamListenerActor = Context.Child(StreamListenerActor.GetName(msg.FixtureId));

            Context.Watch(streamListenerActor);

            _streamListenerBuilderActorRef.Tell(new StreamListenerCreationCompletedMsg
            {
                FixtureId     = msg.FixtureId,
                FixtureStatus = msg.FixtureStatus
            });
        }
 private void StreamConnectedMsgHandler(StreamConnectedMsg msg)
 {
     _startStreamingNotResponding?.Cancel();
     _startStreamingNotResponding = null;
 }