Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 5
0
 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;
 }