Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 1a30da4

Browse files
Merge pull request #498 from github-for-unity/fixes/cache-update-event
Handling the UpdatedTime in CacheUpdateEvent better
2 parents f59e930 + c7b58d6 commit 1a30da4

File tree

3 files changed

+41
-39
lines changed

3 files changed

+41
-39
lines changed

src/GitHub.Api/Git/ManagedCacheExtensions.cs

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/GitHub.Api/Git/Repository.cs

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -113,31 +113,31 @@ public ITask ReleaseLock(string file, bool force)
113113
public void CheckLogChangedEvent(CacheUpdateEvent cacheUpdateEvent)
114114
{
115115
var managedCache = cacheContainer.GitLogCache;
116-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
116+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
117117

118118
Logger.Trace("Check GitLogCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
119119
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
120120

121121
if (raiseEvent)
122122
{
123123
var dateTimeOffset = managedCache.LastUpdatedAt;
124-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
124+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
125125
HandleGitLogCacheUpdatedEvent(updateEvent);
126126
}
127127
}
128128

129129
public void CheckStatusChangedEvent(CacheUpdateEvent cacheUpdateEvent)
130130
{
131131
var managedCache = cacheContainer.GitStatusCache;
132-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
132+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
133133

134134
Logger.Trace("Check GitStatusCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
135135
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
136136

137137
if (raiseEvent)
138138
{
139139
var dateTimeOffset = managedCache.LastUpdatedAt;
140-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
140+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
141141
HandleGitStatusCacheUpdatedEvent(updateEvent);
142142
}
143143
}
@@ -160,32 +160,31 @@ public void CheckCurrentBranchAndRemoteChangedEvent(CacheUpdateEvent cacheUpdate
160160
private void CheckRepositoryInfoCacheEvent(CacheUpdateEvent cacheUpdateEvent)
161161
{
162162
var managedCache = cacheContainer.RepositoryInfoCache;
163-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
163+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
164164

165165
Logger.Trace("Check RepositoryInfoCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
166166
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
167167

168168
if (raiseEvent)
169169
{
170170
var dateTimeOffset = managedCache.LastUpdatedAt;
171-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
171+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset};
172172
HandleRepositoryInfoCacheUpdatedEvent(updateEvent);
173173
}
174174
}
175175

176176
public void CheckLocksChangedEvent(CacheUpdateEvent cacheUpdateEvent)
177177
{
178-
CacheUpdateEvent cacheUpdateEvent1 = cacheUpdateEvent;
179178
var managedCache = cacheContainer.GitLocksCache;
180-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent1);
179+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
181180

182181
Logger.Trace("Check GitLocksCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
183-
cacheUpdateEvent1.UpdatedTimeString ?? "[NULL]", raiseEvent);
182+
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
184183

185184
if (raiseEvent)
186185
{
187186
var dateTimeOffset = managedCache.LastUpdatedAt;
188-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
187+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
189188
HandleGitLocksCacheUpdatedEvent(updateEvent);
190189
}
191190
}
@@ -240,15 +239,15 @@ public bool Equals(IRepository other)
240239
private void CheckBranchCacheEvent(CacheUpdateEvent cacheUpdateEvent)
241240
{
242241
var managedCache = cacheContainer.BranchCache;
243-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
242+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
244243

245244
Logger.Trace("Check BranchCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
246245
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
247246

248247
if (raiseEvent)
249248
{
250249
var dateTimeOffset = managedCache.LastUpdatedAt;
251-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
250+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
252251
HandleBranchCacheUpdatedEvent(updateEvent);
253252
}
254253
}
@@ -285,7 +284,7 @@ private void CacheContainer_OnCacheInvalidated(CacheType cacheType)
285284

286285
private void CacheContainer_OnCacheUpdated(CacheType cacheType, DateTimeOffset offset)
287286
{
288-
var cacheUpdateEvent = new CacheUpdateEvent { UpdatedTimeString = offset.ToString() };
287+
var cacheUpdateEvent = new CacheUpdateEvent { UpdatedTime = offset };
289288
switch (cacheType)
290289
{
291290
case CacheType.BranchCache:
@@ -627,15 +626,15 @@ public User(ICacheContainer cacheContainer)
627626
public void CheckUserChangedEvent(CacheUpdateEvent cacheUpdateEvent)
628627
{
629628
var managedCache = cacheContainer.GitUserCache;
630-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
629+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
631630

632631
Logger.Trace("Check GitUserCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
633632
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
634633

635634
if (raiseEvent)
636635
{
637636
var dateTimeOffset = managedCache.LastUpdatedAt;
638-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
637+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
639638
HandleUserCacheUpdatedEvent(updateEvent);
640639
}
641640
}
@@ -683,7 +682,7 @@ private void GitUserCacheOnCacheUpdated(DateTimeOffset timeOffset)
683682
{
684683
HandleUserCacheUpdatedEvent(new CacheUpdateEvent
685684
{
686-
UpdatedTimeString = timeOffset.ToString()
685+
UpdatedTime = timeOffset
687686
});
688687
}
689688

@@ -726,6 +725,31 @@ private void UpdateUserAndEmail()
726725
[Serializable]
727726
public struct CacheUpdateEvent
728727
{
729-
public string UpdatedTimeString;
728+
[NonSerialized] private DateTimeOffset? updatedTimeValue;
729+
private string updatedTimeString;
730+
731+
public DateTimeOffset UpdatedTime
732+
{
733+
get
734+
{
735+
if (!updatedTimeValue.HasValue)
736+
{
737+
UpdatedTime = DateTimeOffset.MinValue;
738+
}
739+
740+
return updatedTimeValue.Value;
741+
}
742+
set
743+
{
744+
updatedTimeValue = value;
745+
UpdatedTimeString = value.ToString(Constants.Iso8601Format);
746+
}
747+
}
748+
749+
public string UpdatedTimeString
750+
{
751+
get { return updatedTimeString; }
752+
private set { updatedTimeString = value; }
753+
}
730754
}
731755
}

src/GitHub.Api/GitHub.Api.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@
103103
<Compile Include="Application\Organization.cs" />
104104
<Compile Include="Cache\CacheInterfaces.cs" />
105105
<Compile Include="Extensions\ListExtensions.cs" />
106-
<Compile Include="Git\ManagedCacheExtensions.cs" />
107106
<Compile Include="Git\GitAheadBehindStatus.cs" />
108107
<Compile Include="Git\Tasks\GitAheadBehindStatusTask.cs" />
109108
<Compile Include="Git\Tasks\GitLfsVersionTask.cs" />

0 commit comments

Comments
 (0)