Change cancel_query to return a Result
This commit is contained in:
parent
20904ab4e2
commit
3b93302113
15
lib.rs
15
lib.rs
@ -208,10 +208,10 @@ pub struct PostgresCancelData {
|
|||||||
/// `PostgresConnection::cancel_data`. The object can cancel any query made on
|
/// `PostgresConnection::cancel_data`. The object can cancel any query made on
|
||||||
/// that connection.
|
/// that connection.
|
||||||
pub fn cancel_query(url: &str, ssl: &SslMode, data: PostgresCancelData)
|
pub fn cancel_query(url: &str, ssl: &SslMode, data: PostgresCancelData)
|
||||||
-> Option<PostgresConnectError> {
|
-> Result<(), PostgresConnectError> {
|
||||||
let Url { host, port, .. }: Url = match FromStr::from_str(url) {
|
let Url { host, port, .. }: Url = match FromStr::from_str(url) {
|
||||||
Some(url) => url,
|
Some(url) => url,
|
||||||
None => return Some(InvalidUrl)
|
None => return Err(InvalidUrl)
|
||||||
};
|
};
|
||||||
let port = match port {
|
let port = match port {
|
||||||
Some(port) => FromStr::from_str(port).unwrap(),
|
Some(port) => FromStr::from_str(port).unwrap(),
|
||||||
@ -220,7 +220,7 @@ pub fn cancel_query(url: &str, ssl: &SslMode, data: PostgresCancelData)
|
|||||||
|
|
||||||
let mut socket = match initialize_stream(host, port, ssl) {
|
let mut socket = match initialize_stream(host, port, ssl) {
|
||||||
Ok(socket) => socket,
|
Ok(socket) => socket,
|
||||||
Err(err) => return Some(err)
|
Err(err) => return Err(err)
|
||||||
};
|
};
|
||||||
|
|
||||||
socket.write_message(&CancelRequest {
|
socket.write_message(&CancelRequest {
|
||||||
@ -230,7 +230,7 @@ pub fn cancel_query(url: &str, ssl: &SslMode, data: PostgresCancelData)
|
|||||||
});
|
});
|
||||||
socket.flush();
|
socket.flush();
|
||||||
|
|
||||||
None
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn open_socket(host: &str, port: Port)
|
fn open_socket(host: &str, port: Port)
|
||||||
@ -325,7 +325,7 @@ impl Writer for InternalStream {
|
|||||||
|
|
||||||
struct InnerPostgresConnection {
|
struct InnerPostgresConnection {
|
||||||
stream: BufferedStream<InternalStream>,
|
stream: BufferedStream<InternalStream>,
|
||||||
next_stmt_id: int,
|
next_stmt_id: uint,
|
||||||
notice_handler: ~PostgresNoticeHandler,
|
notice_handler: ~PostgresNoticeHandler,
|
||||||
notifications: RingBuf<PostgresNotification>,
|
notifications: RingBuf<PostgresNotification>,
|
||||||
cancel_data: PostgresCancelData,
|
cancel_data: PostgresCancelData,
|
||||||
@ -347,7 +347,7 @@ impl InnerPostgresConnection {
|
|||||||
host,
|
host,
|
||||||
port,
|
port,
|
||||||
user,
|
user,
|
||||||
path,
|
path: mut path,
|
||||||
query: mut args,
|
query: mut args,
|
||||||
..
|
..
|
||||||
}: Url = match FromStr::from_str(url) {
|
}: Url = match FromStr::from_str(url) {
|
||||||
@ -387,7 +387,8 @@ impl InnerPostgresConnection {
|
|||||||
args.push((~"user", user.user.clone()));
|
args.push((~"user", user.user.clone()));
|
||||||
if !path.is_empty() {
|
if !path.is_empty() {
|
||||||
// path contains the leading /
|
// path contains the leading /
|
||||||
args.push((~"database", path.slice_from(1).to_owned()));
|
path.shift_char();
|
||||||
|
args.push((~"database", path));
|
||||||
}
|
}
|
||||||
conn.write_messages([StartupMessage {
|
conn.write_messages([StartupMessage {
|
||||||
version: message::PROTOCOL_VERSION,
|
version: message::PROTOCOL_VERSION,
|
||||||
|
2
test.rs
2
test.rs
@ -615,7 +615,7 @@ fn test_cancel_query() {
|
|||||||
do spawn {
|
do spawn {
|
||||||
timer::sleep(500);
|
timer::sleep(500);
|
||||||
assert!(lib::cancel_query("postgres://postgres@localhost", &NoSsl,
|
assert!(lib::cancel_query("postgres://postgres@localhost", &NoSsl,
|
||||||
cancel_data).is_none());
|
cancel_data).is_ok());
|
||||||
}
|
}
|
||||||
|
|
||||||
match conn.try_update("SELECT pg_sleep(10)", []) {
|
match conn.try_update("SELECT pg_sleep(10)", []) {
|
||||||
|
Loading…
Reference in New Issue
Block a user