protected override async Task OnPublished(IEnumerable <ISerie <TKey, TEntry> > series, PublicationType publish) { await WaitWhileDisconnectedAsync().ConfigureAwait(false); var tasks = new List <Task>(); if (publish.HasFlag(PublicationType.LatestPerCollection)) { var latest = FindLatestForEachId(series); foreach (var serie in latest) { if (serie.Entries.Count > 0) { var key = serie.GetKey(); var entry = serie.GetEntries().First(); tasks.Add(_connection.PublishLatestAsync <TKey, TEntry>(_keyConverter.Convert(key), entry)); } } } if (publish.HasFlag(PublicationType.AllFromCollections)) { foreach (var serie in series) { if (serie.GetEntries().Count > 0) { var key = serie.GetKey(); tasks.Add(_connection.PublishAllAsync <TKey, TEntry>(_keyConverter.Convert(key), serie.GetEntries())); } } } await Task.WhenAll(tasks).ConfigureAwait(false); }
protected virtual Task OnPublished(IEnumerable <ISerie <TKey, TEntry> > series, PublicationType publish) { IEnumerable <Serie <TKey, TEntry> > latest = null; if (publish.HasFlag(PublicationType.LatestPerCollection)) { latest = FindLatestForEachId(series); } if (_publishOnBackgroundThread) { _taskFactory.StartNew(() => { if (publish.HasFlag(PublicationType.LatestPerCollection)) { PublishForLatest(latest); } if (publish.HasFlag(PublicationType.AllFromCollections)) { PublishForAll(series); } }); } else { if (publish.HasFlag(PublicationType.LatestPerCollection)) { PublishForLatest(latest); } if (publish.HasFlag(PublicationType.AllFromCollections)) { PublishForAll(series); } } return(_completed); }