Skip to content

Commit 9895205

Browse files
committed
TryRead
1 parent 94f905b commit 9895205

File tree

1 file changed

+24
-23
lines changed
  • dotnet/src/webdriver/BiDi/Communication

1 file changed

+24
-23
lines changed

dotnet/src/webdriver/BiDi/Communication/Broker.cs

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -143,39 +143,40 @@ private async Task ProcessEventsLoopAsync()
143143
{
144144
while (await _pendingEvents.Reader.WaitToReadAsync().ConfigureAwait(false))
145145
{
146-
try
146+
while (_pendingEvents.Reader.TryRead(out var eventMessage))
147147
{
148-
var result = await _pendingEvents.Reader.ReadAsync().ConfigureAwait(false);
149-
150-
if (_eventHandlers.TryGetValue(result.Method, out var eventHandlers))
148+
try
151149
{
152-
if (eventHandlers is not null)
150+
if (_eventHandlers.TryGetValue(eventMessage.Method, out var eventHandlers))
153151
{
154-
foreach (var handler in eventHandlers.ToArray()) // copy handlers avoiding modified collection while iterating
152+
if (eventHandlers is not null)
155153
{
156-
var args = (EventArgs)result.Params.Deserialize(handler.EventArgsType, _jsonSerializerContext)!;
157-
158-
args.BiDi = _bidi;
159-
160-
// handle browsing context subscriber
161-
if (handler.Contexts is not null && args is BrowsingContextEventArgs browsingContextEventArgs && handler.Contexts.Contains(browsingContextEventArgs.Context))
162-
{
163-
await handler.InvokeAsync(args).ConfigureAwait(false);
164-
}
165-
// handle only session subscriber
166-
else if (handler.Contexts is null)
154+
foreach (var handler in eventHandlers.ToArray()) // copy handlers avoiding modified collection while iterating
167155
{
168-
await handler.InvokeAsync(args).ConfigureAwait(false);
156+
var args = (EventArgs)eventMessage.Params.Deserialize(handler.EventArgsType, _jsonSerializerContext)!;
157+
158+
args.BiDi = _bidi;
159+
160+
// handle browsing context subscriber
161+
if (handler.Contexts is not null && args is BrowsingContextEventArgs browsingContextEventArgs && handler.Contexts.Contains(browsingContextEventArgs.Context))
162+
{
163+
await handler.InvokeAsync(args).ConfigureAwait(false);
164+
}
165+
// handle only session subscriber
166+
else if (handler.Contexts is null)
167+
{
168+
await handler.InvokeAsync(args).ConfigureAwait(false);
169+
}
169170
}
170171
}
171172
}
172173
}
173-
}
174-
catch (Exception ex)
175-
{
176-
if (_logger.IsEnabled(LogEventLevel.Error))
174+
catch (Exception ex)
177175
{
178-
_logger.Error($"Unhandled error processing BiDi event: {ex}");
176+
if (_logger.IsEnabled(LogEventLevel.Error))
177+
{
178+
_logger.Error($"Unhandled error processing BiDi event: {ex}");
179+
}
179180
}
180181
}
181182
}

0 commit comments

Comments
 (0)