-
Notifications
You must be signed in to change notification settings - Fork 451
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
HTTP client API for exporter developers #6
Comments
Please consider adding nghttp2-based stacks (https://github.com/envoyproxy/envoy) to the list. |
You might want to start from https://github.com/aws/aws-sdk-cpp/tree/master/aws-cpp-sdk-core/source/http |
Origin/propagators
Was this addressed in #217? Maybe we can update this issue to needing to add thread-safety, optimizations, or other measures if so? |
#217 brings only http server, we still are missing client part. So either we can modify it to work as thread-safe, optimised http client/server library, or else use header only c++11 cross platform library like https://github.com/yhirose/cpp-httplib. Anyway, I can own this if no one is working on it. We would anyway need it for zipkin support. |
I think we want a portable interface but not an implementation. Consider the use case of compiling this library to Wasm and substituting regular POSIX calls with Wasm externs. Anything that talks over the network cannot be directly translated to Wasm. |
I started working on a common interface last quarter, but it's very much a WiP:
Mentioning here not so that you follow my implementation, but rather the reverse; the common interface you come up with I'll [likely follow and] implement for Solaris, Linux, BSD, macOS, and Windows. (though maybe you'll be inspired by the idea of libacquire in defining said interface) |
[EXPORTER and SDK] Additional fixes after NOMINMAX removal on Windows…
Different OS may have alternate implementations of HTTP stack:
etc.
An exporter that supports HTTP requires a minimum set of methods:
Const-correctness aside, common interface structure could define how an exporter developer may design and implement their own HTTP client.
HTTP client does not have intrinsic knowledge of the binary serialization protocol itself (be that gRPC, protobuf, JSON, MSFT Bond, etc.), but can be invoked by exporter implementation to trigger the data upload. The callback associated with each async HTTP request may further handling the retry policy in case if data collection end-point returns something else than 200 OK.
Basic set of interfaces needed to implement the HTTP client:
The text was updated successfully, but these errors were encountered: