public ProjectorStats(string projectorId, Func <DateTime> nowUtc)
 {
     properties     = new ConcurrentDictionary <string, Property>();
     events         = new List <Event>();
     ProjectorId    = projectorId;
     lastCheckpoint = new TimestampedCheckpoint(0, nowUtc());
 }
 public void TrackProgress(long checkpoint, DateTime timestampUtc)
 {
     lock (progressSyncObject)
     {
         lastMinuteSamples.Record(checkpoint, timestampUtc);
         last10MinuteSamples.Record(checkpoint, timestampUtc);
         lastCheckpoint = new TimestampedCheckpoint(checkpoint, timestampUtc);
     }
 }