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() -> HttpConnector

Construct a new HttpConnector.

impl<R> HttpConnector<R>

fn new_with_resolver(resolver: R) -> HttpConnector<R>

Construct a new HttpConnector.

Takes a Resolver to handle DNS lookups.

fn enforce_http(self: &mut Self, is_enforced: bool)

Option to enforce all Uris have the http scheme.

Enabled by default.

fn set_keepalive(self: &mut Self, time: Option<Duration>)

Set that all sockets have SO_KEEPALIVE set 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_NODELAY set to the supplied value nodelay.

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 Self

Set that all socket have SO_REUSEADDR set to the supplied value reuse_address.

Default is false.

fn set_interface<S: Into<String>>(self: &mut Self, interface: S) -> &mut Self

Sets the name of the interface to bind sockets produced by this connector.

On Linux, this sets the SO_BINDTODEVICE option on this socket (see [man 7 socket] for details). On macOS (and macOS-derived systems like iOS), illumos, and Solaris, this will instead use the IP_BOUND_IF socket 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_RAW or 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.html

fn 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) -> T

Returns the argument unchanged.

impl<T> Instrument for HttpConnector<R>

impl<T> ToOwned for HttpConnector<R>

fn to_owned(self: &Self) -> T
fn clone_into(self: &Self, target: &mut T)

impl<T> WithSubscriber for HttpConnector<R>

impl<T, U> Into for HttpConnector<R>

fn into(self: Self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses 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>