internal void AfterTableClientState(TableClientState triggerState, Action action) { OnTableClientState(triggerState, () => { PSharpRuntime.SendEvent(machineId, new GenericDispatchableEvent(), new ActionDispatchable(action)); return(Task.CompletedTask); }); }
internal MTableConfiguration(TableClientState state) { this.state = state; }
// Not the greatest naming. OnTableClientState blocks the configuration // push until asyncAction completes, while AfterTableClientState does not. internal void OnTableClientState(TableClientState triggerState, Func <Task> asyncAction) { MTableConfiguration dummy; configService.Subscribe(new StateTriggeredActionSubscriber(this, triggerState, asyncAction), out dummy); }
internal StateTriggeredActionSubscriber(ServiceMachineCore outer, TableClientState triggerState, Func <Task> asyncAction) { this.outer = outer; this.triggerState = triggerState; this.asyncAction = asyncAction; }