private async Task RefreshDataAsync(ITerminalDescriptor descriptor, IInstanceRetrievalContext <TData> freshData) { var instance = DataPool.Retrieve(descriptor); await DataPool.SaveAsync(descriptor, freshData); EventsAggregator.PublishDataChangedEvent(descriptor); EventsAggregator.PublishInstanceChangedEvent(new InstanceChangedEventArgs <TData>(descriptor, instance)); }
public async Task SaveAsync(ITerminalDescriptor descriptor, IInstanceRetrievalContext <TData> retrievalContext, Action doAfterDataAdded) { var isExistingInstance = !Data.Add(descriptor, retrievalContext.Data); doAfterDataAdded?.Invoke(); retrievalContext.PublishDataAddedEvent(); await retrievalContext.CompleteReconstitutionAsync(); retrievalContext.PublishDataReconstitutedEvent(); if (isExistingInstance) { Data.Update(descriptor, retrievalContext.Data); } }
public async Task SaveAsync(ITerminalDescriptor descriptor, IInstanceRetrievalContext <TData> retrievalContext) { await SaveAsync(descriptor, retrievalContext, doAfterDataAdded : null); }
public RefreshRetrievalContext <TData> SetResult(ITerminalDescriptor descriptor, IInstanceRetrievalContext <TData> instanceRetrievalContext) { _resultsForTerminal[descriptor] = instanceRetrievalContext; return(this); }
public void PublishTerminalDataAvailableEvent(ITerminalDescriptor descriptor, IInstanceRetrievalContext <TData> retrievalContext) { TerminalDataAvailableEvent?.Invoke(this, new TerminalDataAvailableEventArgs <TData>(descriptor, retrievalContext)); }
public TerminalDataAvailableEventArgs(ITerminalDescriptor descriptor, IInstanceRetrievalContext <TData> retrievalContext) { Descriptor = descriptor; RetrievalContext = retrievalContext; }