Skip to main content

HttpTransport

Trait HttpTransport 

Source
pub trait HttpTransport:
    Send
    + Sync
    + Clone
    + 'static {
    // Required method
    fn request(&self, request: Request<Option<Bytes>>) -> ResponseFuture;
}
Expand description

Trait for pluggable HTTP transport implementations.

Implement this trait to provide HTTP request/response functionality. The transport is responsible for:

  • Establishing HTTP connections (with TLS if needed)
  • Sending HTTP requests
  • Returning streaming HTTP responses
  • Handling timeouts (if desired)

§Example

use launchdarkly_sdk_transport::{HttpTransport, ByteStream, TransportError, Request,
ResponseFuture};
use bytes::Bytes;

#[derive(Clone)]
struct MyTransport {
    // Your HTTP client here
}

impl HttpTransport for MyTransport {
    fn request(&self, request: Request<Option<Bytes>>) -> ResponseFuture {
        // Extract body from request
        // Convert request to your HTTP client's format
        // Make the request
        // Return streaming response
        todo!()
    }
}

Required Methods§

Source

fn request(&self, request: Request<Option<Bytes>>) -> ResponseFuture

Execute an HTTP request and return a streaming response.

§Arguments
  • request - The HTTP request to execute. The body type is Option<Bytes> to support methods like REPORT that may include a request body. Use None for requests without a body (like GET). Bytes can contain either text or binary data.
§Returns

A future that resolves to an HTTP response with a streaming body, or a transport error if the request fails.

The response should include:

  • Status code
  • Response headers
  • A stream of body bytes
§Notes
  • The transport should NOT follow redirects. This should be left to the consumer.
  • The transport should NOT retry requests. This should also be left to the consumer.
  • The transport MAY implement timeouts as desired

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<C> HttpTransport for HyperTransport<C>
where C: Connect + Clone + Send + Sync + 'static,