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}