public (StateMachinePersisted <long, TestState, TestEvent, Context, string, Guid>, Context) CreateStateMachine() { var store = A.Fake <IEventPersistedStore <long, TestState, TestEvent, string, Context, Guid> >(); var retry = A.Fake <IRetryService>(); var stateMachine = new StateMachinePersisted <long, TestState, TestEvent, Context, string, Guid>( A.Fake <IEventPersistedStore <long, TestState, TestEvent, string, Context, Guid> >(), A.Fake <IRetryService>()); stateMachine .Add(new StateA()) .Add(new StateB()) ; var newEventReceived = new NewEventReceived <long, TestState, TestEvent, Context, string, Guid>( stateMachine); var ctx = new Context( 1, TestState.A, 32, store, retry, newEventReceived); return(stateMachine, ctx); }
public Context( long stateMachineKey, TestState currentState, uint size, IEventPersistedStore <long, TestState, TestEvent, string, Context, Guid> eventPersistedStore, IRetryService retryService, NewEventReceived <long, TestState, TestEvent, Context, string, Guid> newEventReceived, int maxDelay = 600) : base( stateMachineKey, currentState, size, eventPersistedStore, retryService, newEventReceived, maxDelay) { }
public void Publish(IEvent ev) { lock (sourceLock) { var id = GenerateId(); events.AddLast(new OrderedEvent(id, ev)); LastEventId = id; counter++; if (counter >= MaxEventCount) { events.RemoveFirst(); counter--; } } NewEventReceived?.Invoke(this, ev); }
public void SignalEventReceived(IEvent ev) { NewEventReceived?.Invoke(this, ev); }