Struct HttpConnector
struct HttpConnector<R = super::dns::GaiResolver> { ... }
A connector for the http scheme.
Performs DNS resolution in a thread pool, and then connects over TCP.
Note
Sets the HttpInfo value on responses, which includes
transport information such as the remote socket address used.
Implementations
impl HttpConnector
fn new() -> HttpConnectorConstruct a new HttpConnector.
impl<R> HttpConnector<R>
fn new_with_resolver(resolver: R) -> HttpConnector<R>Construct a new HttpConnector.
Takes a
Resolverto handle DNS lookups.fn enforce_http(self: &mut Self, is_enforced: bool)Option to enforce all
Uris have thehttpscheme.Enabled by default.
fn set_keepalive(self: &mut Self, time: Option<Duration>)Set that all sockets have
SO_KEEPALIVEset with the supplied duration to remain idle before sending TCP keepalive probes.If
None, keepalive is disabled.Default is
None.fn set_keepalive_interval(self: &mut Self, interval: Option<Duration>)Set the duration between two successive TCP keepalive retransmissions, if acknowledgement to the previous keepalive transmission is not received.
fn set_keepalive_retries(self: &mut Self, retries: Option<u32>)Set the number of retransmissions to be carried out before declaring that remote end is not available.
fn set_nodelay(self: &mut Self, nodelay: bool)Set that all sockets have
SO_NODELAYset to the supplied valuenodelay.Default is
false.fn set_send_buffer_size(self: &mut Self, size: Option<usize>)Sets the value of the SO_SNDBUF option on the socket.
fn set_recv_buffer_size(self: &mut Self, size: Option<usize>)Sets the value of the SO_RCVBUF option on the socket.
fn set_local_address(self: &mut Self, addr: Option<IpAddr>)Set that all sockets are bound to the configured address before connection.
If
None, the sockets will not be bound.Default is
None.fn set_local_addresses(self: &mut Self, addr_ipv4: Ipv4Addr, addr_ipv6: Ipv6Addr)Set that all sockets are bound to the configured IPv4 or IPv6 address (depending on host's preferences) before connection.
fn set_connect_timeout(self: &mut Self, dur: Option<Duration>)Set the connect timeout.
If a domain resolves to multiple IP addresses, the timeout will be evenly divided across them.
Default is
None.fn set_happy_eyeballs_timeout(self: &mut Self, dur: Option<Duration>)Set timeout for RFC 6555 (Happy Eyeballs) algorithm.
If hostname resolves to both IPv4 and IPv6 addresses and connection cannot be established using preferred address family before timeout elapses, then connector will in parallel attempt connection using other address family.
If
None, parallel connection attempts are disabled.Default is 300 milliseconds.
fn set_reuse_address(self: &mut Self, reuse_address: bool) -> &mut SelfSet that all socket have
SO_REUSEADDRset to the supplied valuereuse_address.Default is
false.fn set_interface<S: Into<String>>(self: &mut Self, interface: S) -> &mut SelfSets the name of the interface to bind sockets produced by this connector.
On Linux, this sets the
SO_BINDTODEVICEoption on this socket (see [man 7 socket] for details). On macOS (and macOS-derived systems like iOS), illumos, and Solaris, this will instead use theIP_BOUND_IFsocket option (see [man 7p ip]).If a socket is bound to an interface, only packets received from that particular interface are processed by the socket. Note that this only works for some socket types, particularly `AF_INET`` sockets.
On Linux it can be used to specify a VRF, but the binary needs to either have
CAP_NET_RAWor to be run as root.This function is only available on the following operating systems:
- Linux, including Android
- Fuchsia
- illumos and Solaris
- macOS, iOS, visionOS, watchOS, and tvOS
[
man 7 socket] https://man7.org/linux/man-pages/man7/socket.7.html [man 7p ip]: https://docs.oracle.com/cd/E86824_01/html/E54777/ip-7p.htmlfn set_tcp_user_timeout(self: &mut Self, time: Option<Duration>)Sets the value of the TCP_USER_TIMEOUT option on the socket.
impl<R> Freeze for HttpConnector<R>
impl<R> RefUnwindSafe for HttpConnector<R>
impl<R> Send for HttpConnector<R>
impl<R> Service for HttpConnector<R>
fn poll_ready(self: &mut Self, cx: &mut Context<'_>) -> Poll<Result<(), <Self as >::Error>>fn call(self: &mut Self, dst: Uri) -> <Self as >::Future
impl<R> Sync for HttpConnector<R>
impl<R> Unpin for HttpConnector<R>
impl<R> UnsafeUnpin for HttpConnector<R>
impl<R> UnwindSafe for HttpConnector<R>
impl<R: $crate::clone::Clone> Clone for HttpConnector<R>
fn clone(self: &Self) -> HttpConnector<R>
impl<R: fmt::Debug> Debug for HttpConnector<R>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<T> Any for HttpConnector<R>
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for HttpConnector<R>
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for HttpConnector<R>
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for HttpConnector<R>
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for HttpConnector<R>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> Instrument for HttpConnector<R>
impl<T> ToOwned for HttpConnector<R>
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T> WithSubscriber for HttpConnector<R>
impl<T, U> Into for HttpConnector<R>
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for HttpConnector<R>
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for HttpConnector<R>
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>