pub struct Connection<T, State = Unauthenticated>where
T: DatabaseStream,{
state: PhantomData<State>,
stream: T,
}
Expand description
Responsible for low-level communication with the stream. It handles authentication, sends commands and reads responses.
As opposed to the Client
or Query
can do, connection does not understand what commands do or how to parse
responses. It can only send them, send arguments and be read like a stream.
Fields§
§state: PhantomData<State>
§stream: T
Implementations§
Source§impl<T> Connection<T, Unauthenticated>where
T: DatabaseStream,
impl<T> Connection<T, Unauthenticated>where
T: DatabaseStream,
Sourcepub fn new(stream: T) -> Self
pub fn new(stream: T) -> Self
Creates a connection that communicates with the database via the provided stream
.
Sourcepub fn authenticate(
self,
user: &str,
password: &str,
) -> Result<Connection<T, Authenticated>>
pub fn authenticate( self, user: &str, password: &str, ) -> Result<Connection<T, Authenticated>>
Authenticates the connection using the server protocol. Being authenticated is the pre-requisite for every other method to work.
§Arguments
user
: Username.password
: Password.
Source§impl<T> Connection<T, Authenticated>where
T: DatabaseStream,
impl<T> Connection<T, Authenticated>where
T: DatabaseStream,
pub(crate) fn send_cmd(&mut self, code: u8) -> Result<&mut Self>
pub(crate) fn send_arg(&mut self, argument: &mut impl Read) -> Result<&mut Self>
pub(crate) fn skip_arg(&mut self) -> Result<&mut Self>
Sourcepub(crate) fn get_response(&mut self) -> Result<String>
pub(crate) fn get_response(&mut self) -> Result<String>
Gets response string, and returns string if command was successful. Returns CommandFailed
error with a message otherwise.
Source§impl<T, State> Connection<T, State>where
T: DatabaseStream,
impl<T, State> Connection<T, State>where
T: DatabaseStream,
Trait Implementations§
Source§impl<T: DatabaseStream> Borrow<Connection<T, Authenticated>> for Client<T>
impl<T: DatabaseStream> Borrow<Connection<T, Authenticated>> for Client<T>
Source§fn borrow(&self) -> &Connection<T, Authenticated> ⓘ
fn borrow(&self) -> &Connection<T, Authenticated> ⓘ
Immutably borrows from an owned value. Read more
Source§impl<T: DatabaseStream> BorrowMut<Connection<T, Authenticated>> for Client<T>
impl<T: DatabaseStream> BorrowMut<Connection<T, Authenticated>> for Client<T>
Source§fn borrow_mut(&mut self) -> &mut Connection<T, Authenticated> ⓘ
fn borrow_mut(&mut self) -> &mut Connection<T, Authenticated> ⓘ
Mutably borrows from an owned value. Read more
Source§impl<T, State> Clone for Connection<T, State>where
T: DatabaseStream,
impl<T, State> Clone for Connection<T, State>where
T: DatabaseStream,
Source§impl<T, State: Debug> Debug for Connection<T, State>where
T: DatabaseStream + Debug,
impl<T, State: Debug> Debug for Connection<T, State>where
T: DatabaseStream + Debug,
Source§impl<T, State> Read for Connection<T, State>where
T: DatabaseStream,
impl<T, State> Read for Connection<T, State>where
T: DatabaseStream,
Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning
how many bytes were read. Read more
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like
read
, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
Reads all bytes until EOF in this source, placing them into
buf
. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Reads all bytes until EOF in this source, appending them to
buf
. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Reads the exact number of bytes required to fill
buf
. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf
)Pull some bytes from this source into the specified buffer. Read more
Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf
)Reads the exact number of bytes required to fill
cursor
. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Creates a “by reference” adaptor for this instance of
Read
. Read moreAuto Trait Implementations§
impl<T, State> Freeze for Connection<T, State>where
T: Freeze,
impl<T, State> RefUnwindSafe for Connection<T, State>where
T: RefUnwindSafe,
State: RefUnwindSafe,
impl<T, State> Send for Connection<T, State>
impl<T, State> Sync for Connection<T, State>
impl<T, State> Unpin for Connection<T, State>
impl<T, State> UnwindSafe for Connection<T, State>where
T: UnwindSafe,
State: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more