Skip to content

Implement networking module #41

@RippeR37

Description

@RippeR37

Most modern applications require some kind of networking functionality to fetch or upload some data to the internet, so it makes sense to add a networking module to this library.

This should be somewhat aligned with what is available in Chromium and be based on existing callbacks/threading building blocks, but also probably simplified to provide basic functionality that is easy to use.

Some functionality that should be covered:

  • Fetching data from network
  • Handling multiple requests at the same time
  • HTTP/HTTPS support, optionally more
    • GET, HEAD, possibly POST
  • Ability to simply make a request and get response with all headers, data etc. in a single call
  • Ability to make a request and get more advanced feedback (e.g. call on response started, streaming/per-chunk data writes instead of single call at the end, etc.)
  • Cancellation

This should probably be based on libcurl. The alternative would be to use Boost.Beast but its unsure if that would provide meaningful benefits with possibility of more complicated setup?

It's something to consider whether this should be a part of "core" library or a separate module that one can extra-depend on (especially since it will introduces a new dependency (on curl/boost.beast) and it's not strictly part of //base in Chromium itself).

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions