public Door(Door copy) : base(copy) { Area = new IntRect(copy.Area); OnStateChange += new StateEventHandler(Door_OnStateChange); }
public static Func <ICommand, Task> Run(CancellationToken token, Subject <IEvent> eventSubject, Action <string> logger) { const string streamName = "hamsters"; var commitLog = new MessageVaultClientAdapter(new MemoryClient(), logger); var dispatcher = new Dispatcher <ICommand, Task>(); var eventHandlers = new Dispatcher <IEvent, Task>(); var checkpointWriter = new CheckpointWriterAdapter(new MemoryCheckpointReaderWriter()); var repository = new InMemoryStateRepository <HamsterState>(); var streamProcessor = new StreamProcessor(commitLog, streamName, checkpointWriter, Serialization.Deserializer(), Console.WriteLine); var eventLog = commitLog.ToStreamPoster(Serialization.Serializer()); dispatcher.Register <IHamsterCommand>( command => ApplicationService.Execute( command, id => repository.GetOrCreateAsync(id), state => new HamsterAggregate(state), aggregate => aggregate.Handle(command), eventLog.ForStream(streamName))); eventHandlers.Register <IEvent>(@event => StateEventHandler.ForAsync(@event, repository)); eventSubject.Subscribe(@event => eventHandlers.Dispatch(@event).Wait(token), () => { }, token); streamProcessor.Run(token, @event => eventSubject.OnNext(@event)); return(dispatcher.Dispatch); return(Mixins.WaitForEventsPublished(dispatcher.Dispatch, eventSubject, logger)); }
protected virtual void StateStatus(StateMachineEventArgs ea) { StateEventHandler handler = STEvent; if (handler != null) { handler(this, ea); } }
protected virtual void OnChanged(string message) { StateEventHandler handler = Changed; if (handler != null) { var args = new StateEventArgs() { Message = message }; handler(this, args); } }
public ActorState UpdateState(ActorState state) { if (m_state.Equals(ActorState.RECOVERING) && state.Equals(ActorState.ATTACKING)) { return(m_state); } m_state = state; // Notify listeners of state change StateEventArgs e = new StateEventArgs(m_state); StateEventHandler handler = StateEvent; if (handler != null) { handler(this, e); } return(m_state); }
public State OnTimeout(StateEventHandler onTimeout) { OnStateTimeout = onTimeout; return(this); }
public State OnExit(StateEventHandler onExit) { OnStateExit = onExit; return(this); }
public State OnEnter(StateEventHandler onEnter) { OnStateEnter = onEnter; return(this); }
public Door() : base() { OnStateChange += new StateEventHandler(Door_OnStateChange); }