tokio_postgres_fork/
cancel_query.rs

1use crate::client::SocketConfig;
2use crate::config::{SslMode, SslNegotiation};
3use crate::tls::MakeTlsConnect;
4use crate::{cancel_query_raw, connect_socket, Error, Socket};
5use std::io;
6
7pub(crate) async fn cancel_query<T>(
8    config: Option<SocketConfig>,
9    ssl_mode: SslMode,
10    ssl_negotiation: SslNegotiation,
11    mut tls: T,
12    process_id: i32,
13    secret_key: i32,
14) -> Result<(), Error>
15where
16    T: MakeTlsConnect<Socket>,
17{
18    let config = match config {
19        Some(config) => config,
20        None => {
21            return Err(Error::connect(io::Error::new(
22                io::ErrorKind::InvalidInput,
23                "unknown host",
24            )))
25        }
26    };
27
28    let tls = tls
29        .make_tls_connect(config.hostname.as_deref().unwrap_or(""))
30        .map_err(|e| Error::tls(e.into()))?;
31    let has_hostname = config.hostname.is_some();
32
33    let socket = connect_socket::connect_socket(
34        &config.addr,
35        config.port,
36        config.connect_timeout,
37        config.tcp_user_timeout,
38        config.keepalive.as_ref(),
39    )
40    .await?;
41
42    cancel_query_raw::cancel_query_raw(
43        socket,
44        ssl_mode,
45        ssl_negotiation,
46        tls,
47        has_hostname,
48        process_id,
49        secret_key,
50    )
51    .await
52}