private void ProcessIncomingMessage(ConnectionResponse obj) { if (!obj.Params.HasValue) { GetSession(obj.SessionId ?? string.Empty)?.OnMessage(obj); return; } var param = ChromiumProtocolTypes.ParseEvent(obj.Method, obj.Params.Value.GetRawText()); if (obj.Id == BrowserCloseMessageId) { return; } if (param is TargetAttachedToTargetChromiumEvent targetAttachedToTarget) { string sessionId = targetAttachedToTarget.SessionId; ChromiumSession session = new ChromiumSession(this, targetAttachedToTarget.TargetInfo.GetTargetType(), sessionId); _asyncSessions.AddItem(sessionId, session); } else if (param is TargetDetachedFromTargetChromiumEvent targetDetachedFromTarget) { string sessionId = targetDetachedFromTarget.SessionId; if (_sessions.TryRemove(sessionId, out var session) && !session.IsClosed) { session.OnClosed(targetDetachedFromTarget.InternalName); } } GetSession(obj.SessionId ?? string.Empty).OnMessageReceived(param); }
internal void OnMessage(ConnectionResponse obj) { int?id = obj.Id; if (id.HasValue && _callbacks.TryRemove(id.Value, out var callback)) { if (obj.Error != null) { callback.TaskWrapper.TrySetException(new MessageException(callback, obj.Error)); } else { var result = ChromiumProtocolTypes.ParseResponse(callback.Method, obj.Result?.GetRawText()); callback.TaskWrapper.TrySetResult(result); } } }