OSDN Git Service

PostClass.CreatedAtの型をDateTimeUtcに変更
[opentween/open-tween.git] / OpenTween / Models / HomeTabModel.cs
index ba93579..627fa9c 100644 (file)
@@ -45,7 +45,7 @@ namespace OpenTween.Models
 
         // 流速計測用
         private int tweetsPerHour = 0;
-        private ConcurrentDictionary<DateTime, int> tweetsTimestamps = new ConcurrentDictionary<DateTime, int>();
+        private ConcurrentDictionary<DateTimeUtc, int> tweetsTimestamps = new ConcurrentDictionary<DateTimeUtc, int>();
 
         public HomeTabModel() : this(MyCommon.DEFAULTTAB.RECENT)
         {
@@ -86,9 +86,9 @@ namespace OpenTween.Models
         /// <summary>
         /// タイムラインに追加された発言件数を反映し、タイムラインの流速を更新します
         /// </summary>
-        private void UpdateTimelineSpeed(DateTime postCreatedAt)
+        private void UpdateTimelineSpeed(DateTimeUtc postCreatedAt)
         {
-            var now = DateTime.Now;
+            var now = DateTimeUtc.Now;
 
             // 1 時間以上前の時刻は追加しない
             var oneHour = TimeSpan.FromHours(1);
@@ -97,20 +97,19 @@ namespace OpenTween.Models
 
             this.tweetsTimestamps.AddOrUpdate(postCreatedAt, 1, (k, v) => v + 1);
 
-            var removeKeys = new List<DateTime>();
+            var removeKeys = new List<DateTimeUtc>();
             var tweetsInWindow = 0;
-            foreach (var pair in this.tweetsTimestamps)
+            foreach (var (timestamp, count) in this.tweetsTimestamps)
             {
-                if (now - pair.Key > oneHour)
-                    removeKeys.Add(pair.Key);
+                if (now - timestamp > oneHour)
+                    removeKeys.Add(timestamp);
                 else
-                    tweetsInWindow += pair.Value;
+                    tweetsInWindow += count;
             }
             Interlocked.Exchange(ref this.tweetsPerHour, tweetsInWindow);
 
-            int _;
             foreach (var key in removeKeys)
-                this.tweetsTimestamps.TryRemove(key, out _);
+                this.tweetsTimestamps.TryRemove(key, out var _);
         }
     }
 }