parlov-probe
HTTP probe execution for parlov. Sends requests, captures the full response surface with timing.
trait
One call, one HTTP interaction, one ProbeExchange (paired request + response). The caller drives batching and sample collection. Request context is preserved alongside the response for downstream differential analysis.
use it
use HttpProbe;
use Probe;
use ProbeDefinition;
use ;
let client = new;
let exchange = client.execute.await?;
println!;
println!;
On native targets, HttpProbe uses reqwest with connection pooling. On wasm32-unknown-unknown (Cloudflare Workers), the same HttpProbe API routes through worker::Fetch from the Cloudflare Workers Rust SDK — the conversion preserves multi-valued headers (Set-Cookie, WWW-Authenticate, Cache-Control). Timing is measured via std::time::Instant around the request-to-response path. All headers from ProbeDefinition are forwarded — auth context is expressed as a plain Authorization header.
HttpProbe derives Clone. Cloning is O(1) — the inner client is Arc-backed — so a single configured instance can be shared across concurrent probe loops without re-initializing the connection pool. HttpProbe::with_client(reqwest::Client) accepts a caller-supplied client when non-default configuration is needed (custom redirect policy, pinned TLS roots, timeouts).
custom probes
Implement Probe for custom execution strategies (e.g. HTTP/2 single-packet timing, mTLS client certs):
license
MIT OR Apache-2.0