Line data Source code
1 : use tokio::net::TcpStream;
2 :
3 : use crate::client::SocketConfig;
4 : use crate::config::{Host, SslMode};
5 : use crate::tls::MakeTlsConnect;
6 : use crate::{cancel_query_raw, connect_socket, Error};
7 : use std::io;
8 :
9 0 : pub(crate) async fn cancel_query<T>(
10 0 : config: Option<SocketConfig>,
11 0 : ssl_mode: SslMode,
12 0 : mut tls: T,
13 0 : process_id: i32,
14 0 : secret_key: i32,
15 0 : ) -> Result<(), Error>
16 0 : where
17 0 : T: MakeTlsConnect<TcpStream>,
18 0 : {
19 0 : let config = match config {
20 0 : Some(config) => config,
21 : None => {
22 0 : return Err(Error::connect(io::Error::new(
23 0 : io::ErrorKind::InvalidInput,
24 0 : "unknown host",
25 0 : )))
26 : }
27 : };
28 :
29 0 : let hostname = match &config.host {
30 0 : Host::Tcp(host) => &**host,
31 : };
32 0 : let tls = tls
33 0 : .make_tls_connect(hostname)
34 0 : .map_err(|e| Error::tls(e.into()))?;
35 :
36 0 : let socket =
37 0 : connect_socket::connect_socket(&config.host, config.port, config.connect_timeout).await?;
38 :
39 0 : cancel_query_raw::cancel_query_raw(socket, ssl_mode, tls, process_id, secret_key).await
40 0 : }
|