More moves
This commit is contained in:
parent
52991387e5
commit
ad6fa4d0b1
13
src/lib.rs
13
src/lib.rs
@ -167,11 +167,14 @@ pub fn cancel_query<T>(params: T,
|
|||||||
let params = try!(params.into_connect_params().map_err(ConnectError::ConnectParams));
|
let params = try!(params.into_connect_params().map_err(ConnectError::ConnectParams));
|
||||||
let mut socket = try!(priv_io::initialize_stream(¶ms, tls));
|
let mut socket = try!(priv_io::initialize_stream(¶ms, tls));
|
||||||
|
|
||||||
try!(socket.write_message(&Frontend::CancelRequest {
|
let message = frontend::CancelRequest {
|
||||||
code: message::CANCEL_CODE,
|
process_id: data.process_id as i32,
|
||||||
process_id: data.process_id,
|
secret_key: data.secret_key as i32,
|
||||||
secret_key: data.secret_key,
|
};
|
||||||
}));
|
let mut buf = vec![];
|
||||||
|
try!(frontend::Message::write(&message, &mut buf));
|
||||||
|
|
||||||
|
try!(socket.write_all(&buf));
|
||||||
try!(socket.flush());
|
try!(socket.flush());
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -7,9 +7,6 @@ use byteorder::{BigEndian, ReadBytesExt, WriteBytesExt};
|
|||||||
use types::Oid;
|
use types::Oid;
|
||||||
use priv_io::StreamOptions;
|
use priv_io::StreamOptions;
|
||||||
|
|
||||||
pub const CANCEL_CODE: u32 = 80877102;
|
|
||||||
pub const SSL_CODE: u32 = 80877103;
|
|
||||||
|
|
||||||
pub enum Backend {
|
pub enum Backend {
|
||||||
AuthenticationCleartextPassword,
|
AuthenticationCleartextPassword,
|
||||||
AuthenticationGSS,
|
AuthenticationGSS,
|
||||||
@ -85,11 +82,6 @@ pub struct RowDescriptionEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub enum Frontend<'a> {
|
pub enum Frontend<'a> {
|
||||||
CancelRequest {
|
|
||||||
code: u32,
|
|
||||||
process_id: u32,
|
|
||||||
secret_key: u32,
|
|
||||||
},
|
|
||||||
CopyData {
|
CopyData {
|
||||||
data: &'a [u8],
|
data: &'a [u8],
|
||||||
},
|
},
|
||||||
@ -101,9 +93,6 @@ pub enum Frontend<'a> {
|
|||||||
portal: &'a str,
|
portal: &'a str,
|
||||||
max_rows: i32,
|
max_rows: i32,
|
||||||
},
|
},
|
||||||
SslRequest {
|
|
||||||
code: u32,
|
|
||||||
},
|
|
||||||
Sync,
|
Sync,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,14 +117,9 @@ impl<W: Write> WriteMessage for W {
|
|||||||
#[allow(cyclomatic_complexity)]
|
#[allow(cyclomatic_complexity)]
|
||||||
fn write_message(&mut self, message: &Frontend) -> io::Result<()> {
|
fn write_message(&mut self, message: &Frontend) -> io::Result<()> {
|
||||||
let mut buf = vec![];
|
let mut buf = vec![];
|
||||||
let mut ident = None;
|
let ident;
|
||||||
|
|
||||||
match *message {
|
match *message {
|
||||||
Frontend::CancelRequest { code, process_id, secret_key } => {
|
|
||||||
try!(buf.write_u32::<BigEndian>(code));
|
|
||||||
try!(buf.write_u32::<BigEndian>(process_id));
|
|
||||||
try!(buf.write_u32::<BigEndian>(secret_key));
|
|
||||||
}
|
|
||||||
Frontend::CopyData { data } => {
|
Frontend::CopyData { data } => {
|
||||||
ident = Some(b'd');
|
ident = Some(b'd');
|
||||||
try!(buf.write_all(data));
|
try!(buf.write_all(data));
|
||||||
@ -150,7 +134,6 @@ impl<W: Write> WriteMessage for W {
|
|||||||
try!(buf.write_cstr(portal));
|
try!(buf.write_cstr(portal));
|
||||||
try!(buf.write_i32::<BigEndian>(max_rows));
|
try!(buf.write_i32::<BigEndian>(max_rows));
|
||||||
}
|
}
|
||||||
Frontend::SslRequest { code } => try!(buf.write_u32::<BigEndian>(code)),
|
|
||||||
Frontend::Sync => ident = Some(b'S'),
|
Frontend::Sync => ident = Some(b'S'),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,13 +11,12 @@ use std::os::unix::net::UnixStream;
|
|||||||
use std::os::unix::io::{AsRawFd, RawFd};
|
use std::os::unix::io::{AsRawFd, RawFd};
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
use std::os::windows::io::{AsRawSocket, RawSocket};
|
use std::os::windows::io::{AsRawSocket, RawSocket};
|
||||||
|
use postgres_protocol::message::frontend;
|
||||||
|
|
||||||
use TlsMode;
|
use TlsMode;
|
||||||
use params::{ConnectParams, ConnectTarget};
|
use params::{ConnectParams, ConnectTarget};
|
||||||
use error::ConnectError;
|
use error::ConnectError;
|
||||||
use io::TlsStream;
|
use io::TlsStream;
|
||||||
use message::{self, WriteMessage};
|
|
||||||
use message::Frontend;
|
|
||||||
|
|
||||||
const DEFAULT_PORT: u16 = 5432;
|
const DEFAULT_PORT: u16 = 5432;
|
||||||
|
|
||||||
@ -171,7 +170,9 @@ pub fn initialize_stream(params: &ConnectParams,
|
|||||||
TlsMode::Require(handshaker) => (true, handshaker),
|
TlsMode::Require(handshaker) => (true, handshaker),
|
||||||
};
|
};
|
||||||
|
|
||||||
try!(socket.write_message(&Frontend::SslRequest { code: message::SSL_CODE }));
|
let mut buf = vec![];
|
||||||
|
try!(frontend::Message::write(&frontend::SslRequest, &mut buf));
|
||||||
|
try!(socket.write_all(&buf));
|
||||||
try!(socket.flush());
|
try!(socket.flush());
|
||||||
|
|
||||||
if try!(socket.read_u8()) == b'N' {
|
if try!(socket.read_u8()) == b'N' {
|
||||||
|
Loading…
Reference in New Issue
Block a user