tokio_postgres/
cancel_query.rs

1use crate::client::SocketConfig;
2use crate::config::SslMode;
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    mut tls: T,
11    process_id: i32,
12    secret_key: i32,
13) -> Result<(), Error>
14where
15    T: MakeTlsConnect<Socket>,
16{
17    let config = match config {
18        Some(config) => config,
19        None => {
20            return Err(Error::connect(io::Error::new(
21                io::ErrorKind::InvalidInput,
22                "unknown host",
23            )))
24        }
25    };
26
27    let tls = tls
28        .make_tls_connect(config.hostname.as_deref().unwrap_or(""))
29        .map_err(|e| Error::tls(e.into()))?;
30    let has_hostname = config.hostname.is_some();
31
32    let socket = connect_socket::connect_socket(
33        &config.addr,
34        config.port,
35        config.connect_timeout,
36        config.tcp_user_timeout,
37        config.keepalive.as_ref(),
38    )
39    .await?;
40
41    cancel_query_raw::cancel_query_raw(socket, ssl_mode, tls, has_hostname, process_id, secret_key)
42        .await
43}