//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; }