pingora_core::upstreams::peer

Trait Peer

Source
pub trait Peer: Display + Clone {
Show 24 methods // Required methods fn address(&self) -> &SocketAddr; fn tls(&self) -> bool; fn sni(&self) -> &str; fn reuse_hash(&self) -> u64; // Provided methods fn get_proxy(&self) -> Option<&Proxy> { ... } fn get_peer_options(&self) -> Option<&PeerOptions> { ... } fn get_mut_peer_options(&mut self) -> Option<&mut PeerOptions> { ... } fn verify_cert(&self) -> bool { ... } fn verify_hostname(&self) -> bool { ... } fn alternative_cn(&self) -> Option<&String> { ... } fn bind_to(&self) -> Option<&BindTo> { ... } fn connection_timeout(&self) -> Option<Duration> { ... } fn total_connection_timeout(&self) -> Option<Duration> { ... } fn idle_timeout(&self) -> Option<Duration> { ... } fn get_alpn(&self) -> Option<&ALPN> { ... } fn get_ca(&self) -> Option<&Arc<CaType>> { ... } fn get_client_cert_key(&self) -> Option<&Arc<CertKey>> { ... } fn tcp_keepalive(&self) -> Option<&TcpKeepalive> { ... } fn h2_ping_interval(&self) -> Option<Duration> { ... } fn tcp_recv_buf(&self) -> Option<usize> { ... } fn dscp(&self) -> Option<u8> { ... } fn tcp_fast_open(&self) -> bool { ... } fn matches_fd<V: AsRawFd>(&self, fd: V) -> bool { ... } fn get_tracer(&self) -> Option<Tracer> { ... }
}
Expand description

Peer defines the interface to communicate with the crate::connectors regarding where to connect to and how to connect to it.

Required Methods§

Source

fn address(&self) -> &SocketAddr

The remote address to connect to

Source

fn tls(&self) -> bool

If TLS should be used;

Source

fn sni(&self) -> &str

The SNI to send, if TLS is used

Source

fn reuse_hash(&self) -> u64

To decide whether a Peer can use the connection established by another Peer.

The connections to two peers are considered reusable to each other if their reuse hashes are the same

Provided Methods§

Source

fn get_proxy(&self) -> Option<&Proxy>

Get the proxy setting to connect to the remote server

Source

fn get_peer_options(&self) -> Option<&PeerOptions>

Get the additional options to connect to the peer.

See PeerOptions for more details

Source

fn get_mut_peer_options(&mut self) -> Option<&mut PeerOptions>

Get the additional options for modification.

Source

fn verify_cert(&self) -> bool

Whether the TLS handshake should validate the cert of the server.

Source

fn verify_hostname(&self) -> bool

Whether the TLS handshake should verify that the server cert matches the SNI.

Source

fn alternative_cn(&self) -> Option<&String>

The alternative common name to use to verify the server cert.

If the server cert doesn’t match the SNI, this name will be used to verify the cert.

Source

fn bind_to(&self) -> Option<&BindTo>

Information about the local source address this connection should be bound to.

Source

fn connection_timeout(&self) -> Option<Duration>

How long connect() call should be wait before it returns a timeout error.

Source

fn total_connection_timeout(&self) -> Option<Duration>

How long the overall connection establishment should take before a timeout error is returned.

Source

fn idle_timeout(&self) -> Option<Duration>

If the connection can be reused, how long the connection should wait to be reused before it shuts down.

Source

fn get_alpn(&self) -> Option<&ALPN>

Get the ALPN preference.

Source

fn get_ca(&self) -> Option<&Arc<CaType>>

Get the CA cert to use to validate the server cert.

If not set, the default CAs will be used.

Source

fn get_client_cert_key(&self) -> Option<&Arc<CertKey>>

Get the client cert and key for mutual TLS if any

Source

fn tcp_keepalive(&self) -> Option<&TcpKeepalive>

The TCP keepalive setting that should be applied to this connection

Source

fn h2_ping_interval(&self) -> Option<Duration>

The interval H2 pings to send to the server if any

Source

fn tcp_recv_buf(&self) -> Option<usize>

The size of the TCP receive buffer should be limited to. See SO_RCVBUF for more details.

Source

fn dscp(&self) -> Option<u8>

The DSCP value that should be applied to the send side of this connection. See the RFC for more details.

Source

fn tcp_fast_open(&self) -> bool

Whether to enable TCP fast open.

Source

fn matches_fd<V: AsRawFd>(&self, fd: V) -> bool

Source

fn get_tracer(&self) -> Option<Tracer>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§