Skip to content

Commit f5b5d87

Browse files
authored
Single lookups into concurrent dictionary (#2231)
1 parent 51bf7ce commit f5b5d87

File tree

3 files changed

+6
-28
lines changed

3 files changed

+6
-28
lines changed

lib/PuppeteerSharp/ChromeTargetManager.cs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -89,18 +89,8 @@ public async Task InitializeAsync()
8989

9090
public void AddTargetInterceptor(CDPSession session, TargetInterceptor interceptor)
9191
{
92-
lock (_targetInterceptors)
93-
{
94-
_targetInterceptors.TryGetValue(session, out var interceptors);
95-
96-
if (interceptors == null)
97-
{
98-
interceptors = new List<TargetInterceptor>();
99-
_targetInterceptors.TryAdd(session, interceptors);
100-
}
101-
102-
interceptors.Add(interceptor);
103-
}
92+
var interceptors = _targetInterceptors.GetOrAdd(session, static _ => new());
93+
interceptors.Add(interceptor);
10494
}
10595

10696
public void RemoveTargetInterceptor(CDPSession session, TargetInterceptor interceptor)

lib/PuppeteerSharp/FirefoxTargetManager.cs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,8 @@ public FirefoxTargetManager(
4646

4747
public void AddTargetInterceptor(CDPSession session, TargetInterceptor interceptor)
4848
{
49-
lock (_targetInterceptors)
50-
{
51-
_targetInterceptors.TryGetValue(session, out var interceptors);
52-
53-
if (interceptors == null)
54-
{
55-
interceptors = new List<TargetInterceptor>();
56-
_targetInterceptors.TryAdd(session, interceptors);
57-
}
58-
59-
interceptors.Add(interceptor);
60-
}
49+
var interceptors = _targetInterceptors.GetOrAdd(session, static _ => new());
50+
interceptors.Add(interceptor);
6151
}
6252

6353
public void RemoveTargetInterceptor(CDPSession session, TargetInterceptor interceptor)

lib/PuppeteerSharp/FrameTree.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ internal Task<Frame> WaitForFrameAsync(string frameId)
4444
}
4545

4646
var deferred = new TaskCompletionSource<Frame>(TaskCreationOptions.RunContinuationsAsynchronously);
47-
_waitRequests.TryAdd(frameId, new List<TaskCompletionSource<Frame>>());
48-
_waitRequests.TryGetValue(frameId, out var callbacks);
47+
var callbacks = _waitRequests.GetOrAdd(frameId, static _ => new());
4948
callbacks.Add(deferred);
5049

5150
return deferred.Task;
@@ -58,8 +57,7 @@ internal void AddFrame(Frame frame)
5857
{
5958
_parentIds.TryAdd(frame.Id, frame.ParentId);
6059

61-
_childIds.TryAdd(frame.ParentId, new List<string>());
62-
_childIds.TryGetValue(frame.ParentId, out var childIds);
60+
var childIds = _childIds.GetOrAdd(frame.ParentId, static _ => new());
6361
childIds.Add(frame.Id);
6462
}
6563
else

0 commit comments

Comments
 (0)