-
Notifications
You must be signed in to change notification settings - Fork 25.1k
Implement Network.loadNetworkResource etc in C++ #44845
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
This pull request was exported from Phabricator. Differential Revision: D54309633 |
|
This pull request was exported from Phabricator. Differential Revision: D54309633 |
Summary: Pull Request resolved: facebook#44845 ## Design - `NetworkIO` is an object owned by the `HostAgent`, created by `HostTarget` where it is given a scoped executor. - `HostAgent` passes most handling of CDP `Network.loadNetworkResource` through `NetworkIO`. - `NetworkIO.loadNetworkResource` creates and holds a shared_ptr to a `Stream` representing a single resource load, and owning received headers and data. A reference is held in a map `streams_` until an error or it is closed with `IO.close`. `delegate.networkRequest` is called with the `stream`, which it retains for the lifetime of the request, and uses its methods to call back with headers, data and errors. - Callbacks for `IO.read` requests are held by the `Stream` until the incoming data is complete or enough data is available to fill the request (an implementation choice to optimise for fewest round trips). Any incoming data or error causes any pending requests to be rechecked. ## Unimplemented platforms - Platforms may optionally implement `HostTargetDelegate.networkRequest` (as of this diff, none do). If they don't we report a CDP "not implemented" error, similar to the status quo where it was unimplemented by the C++ agent. Differential Revision: D54309633
5bc1c18 to
59688d5
Compare
Summary: Pull Request resolved: facebook#44845 ## Design - `NetworkIO` is an object owned by the `HostAgent`, created by `HostTarget` where it is given a scoped executor. - `HostAgent` passes most handling of CDP `Network.loadNetworkResource` through `NetworkIO`. - `NetworkIO.loadNetworkResource` creates and holds a shared_ptr to a `Stream` representing a single resource load, and owning received headers and data. A reference is held in a map `streams_` until an error or it is closed with `IO.close`. `delegate.networkRequest` is called with the `stream`, which it retains for the lifetime of the request, and uses its methods to call back with headers, data and errors. - Callbacks for `IO.read` requests are held by the `Stream` until the incoming data is complete or enough data is available to fill the request (an implementation choice to optimise for fewest round trips). Any incoming data or error causes any pending requests to be rechecked. ## Unimplemented platforms - Platforms may optionally implement `HostTargetDelegate.networkRequest` (as of this diff, none do). If they don't we report a CDP "not implemented" error, similar to the status quo where it was unimplemented by the C++ agent. Differential Revision: D54309633
59688d5 to
f9b7144
Compare
|
This pull request was exported from Phabricator. Differential Revision: D54309633 |
1 similar comment
|
This pull request was exported from Phabricator. Differential Revision: D54309633 |
Summary: Pull Request resolved: facebook#44845 ## Design - `NetworkIO` is an object owned by the `HostAgent`, created by `HostTarget` where it is given a scoped executor. - `HostAgent` passes most handling of CDP `Network.loadNetworkResource` through `NetworkIO`. - `NetworkIO.loadNetworkResource` creates and holds a shared_ptr to a `Stream` representing a single resource load, and owning received headers and data. A reference is held in a map `streams_` until an error or it is closed with `IO.close`. `delegate.networkRequest` is called with the `stream`, which it retains for the lifetime of the request, and uses its methods to call back with headers, data and errors. - Callbacks for `IO.read` requests are held by the `Stream` until the incoming data is complete or enough data is available to fill the request (an implementation choice to optimise for fewest round trips). Any incoming data or error causes any pending requests to be rechecked. ## Unimplemented platforms - Platforms may optionally implement `HostTargetDelegate.networkRequest` (as of this diff, none do). If they don't we report a CDP "not implemented" error, similar to the status quo where it was unimplemented by the C++ agent. Differential Revision: D54309633
f9b7144 to
5601798
Compare
Summary: Pull Request resolved: facebook#44845 ## Design - `NetworkIO` is an object owned by the `HostAgent`, created by `HostTarget` where it is given a scoped executor. - `HostAgent` passes most handling of CDP `Network.loadNetworkResource` through `NetworkIO`. - `NetworkIO.loadNetworkResource` creates and holds a shared_ptr to a `Stream` representing a single resource load, and owning received headers and data. A reference is held in a map `streams_` until an error or it is closed with `IO.close`. `delegate.networkRequest` is called with the `stream`, which it retains for the lifetime of the request, and uses its methods to call back with headers, data and errors. - Callbacks for `IO.read` requests are held by the `Stream` until the incoming data is complete or enough data is available to fill the request (an implementation choice to optimise for fewest round trips). Any incoming data or error causes any pending requests to be rechecked. ## Unimplemented platforms - Platforms may optionally implement `HostTargetDelegate.networkRequest` (as of this diff, none do). If they don't we report a CDP "not implemented" error, similar to the status quo where it was unimplemented by the C++ agent. Differential Revision: D54309633
|
This pull request was exported from Phabricator. Differential Revision: D54309633 |
5601798 to
a94bf55
Compare
|
This pull request has been merged in 193cdc3. |
|
This pull request was successfully merged by @robhogan in 193cdc3. When will my fix make it into a release? | How to file a pick request? |
Summary:
Design
NetworkIOAgentis owned by theHostAgent.NetworkIOAgentis passed any CDP requests not handled by theHostAgentitself, and before delegating toInstanceAgent.Network.loadNetworkResourceIO.readIO.closeNetworkIOAgent.loadNetworkResourcecreates aStreamcorresponding to a single resource download/upload. A reference is held in a mapstreams_until an error, the agent is disconnected (destroyed) or it is discarded by the frontend withIO.close.delegate.loadNetworkResourceis called with astream-scoped executor, which it uses to call back with headers, data and errors.IO.readrequests are held by theStreamuntil the incoming data is complete or enough data is available to fill the request (an implementation choice to optimise for fewest round trips). Any incoming data or error causes any pending requests to be rechecked.{F1719616688}
Unimplemented platforms
HostTargetDelegate.networkRequest(as of this diff, none do). If they don't we report a CDP "not implemented" error, similar to the status quo where it was unimplemented by the C++ agent.Changelog:
[General][Added] Debugging: implement common C++ layer of CDP
Network.loadNetworkResourceDifferential Revision: D54309633