HD SDK — Interface Binding
Both SDK clients take their network interfaces as explicit constructor arguments. The SDK never reads an environment variable to discover an interface — see Interfaces are yours to supply for the full explanation, including the two environment variables the SDK does read (for the network stack, not for interfaces).
Constructors
// Ingest client — data_plane_interface carries the FHDWP transport,
// control_plane_interface the registration and discovery calls.
// An empty string binds to all interfaces (0.0.0.0).
explicit FermiHDIIngestClient(const std::string& data_plane_interface = "",
const std::string& control_plane_interface = "");
// Query client — same semantics, plus the proxy URL.
explicit FermiHDIQueryClient(const std::string& proxy_url = "",
const std::string& data_plane_interface = "",
const std::string& control_plane_interface = "");
FermiHDIIngestClient ingest("eth1", "eth0"); // data, control
FermiHDIQueryClient query("https://proxy.internal:8443", "eth1", "eth0");
Every other binding takes the same two interfaces the same way — as
arguments to its own constructor, not as an environment lookup. The
Go binding, for example, exposes
NewQueryClientWithInterfaces(proxyURL, dataPlaneIface, ctrlPlaneIface string)
alongside a convenience constructor that binds to all interfaces.
Naming the right interface
HD separates traffic across three planes: control, data, and observability. An SDK client only opens the first two — it serves no health or metrics endpoint of its own (see Health and metrics are strings, not endpoints), so it has no observability interface to name.
On a host or container with separate networks for each plane, name the data and control interfaces explicitly rather than leaving them empty. Binding to all interfaces works on a flat, single-homed network, but on a segmented one it means the client may send or listen on the wrong network — which for the data plane in particular can mean a Storage Node cannot reach the address the client advertises, and a query returns zero rows with no error. See Addressing for that failure mode in full.
Where to go next
- Getting started — the full explanation, with what happens when an interface is left empty.
- Configuration — the two environment variables the SDK does read.