tokio_postgres_fork/
cancel_query.rs1use 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}