17 using System.Collections.Generic;
19 using System.Threading;
42 private int _dataPointCount;
60 var frontier = DateTime.MinValue;
62 var universeSelectionData =
new Dictionary<Universe, BaseDataCollection>();
66 var earlyBirdTicks =
long.MaxValue;
67 var data =
new List<DataFeedPacket>();
68 foreach (var subscription
in subscriptions.Where(subscription => !subscription.EndOfStream))
70 if (subscription.Current ==
null && !subscription.MoveNext())
78 while (subscription.Current.EmitTimeUtc <= frontier)
83 packet =
new DataFeedPacket(subscription.Security, subscription.Configuration);
89 packet.
Add(subscription.Current.Data);
90 Interlocked.Increment(ref _dataPointCount);
91 if (!subscription.MoveNext())
97 if (subscription.Current !=
null)
100 earlyBirdTicks = Math.Min(earlyBirdTicks, subscription.Current.EmitTimeUtc.Ticks);
107 yield
return timeSliceFactory.Create(frontier, data,
SecurityChanges.
None, universeSelectionData).Slice;
111 if (earlyBirdTicks ==
long.MaxValue)
break;
113 frontier =
new DateTime(Math.Max(earlyBirdTicks, frontier.Ticks), DateTimeKind.Utc);
117 foreach (var subscription
in subscriptions)
119 subscription.Dispose();
147 var config = request.ToSubscriptionDataConfig();
158 var reader = history.GetEnumerator();
161 if (useDailyStrictEndTimes)