Skip to main content

WireConn

Struct WireConn 

Source
pub struct WireConn {
    pub params: HashMap<String, String>,
    /* private fields */
}
Expand description

Raw PostgreSQL wire connection. Handles TCP I/O, buffered reading, and authentication.

Fields§

§params: HashMap<String, String>

Server parameters reported via ParameterStatus during startup.

PostgreSQL reports a small set of GUCs it considers useful to clients: typically server_version, server_encoding, client_encoding, application_name, is_superuser, session_authorization, DateStyle, IntervalStyle, TimeZone, integer_datetimes, and standard_conforming_strings. The exact set depends on the server version and its GUC_REPORT configuration.

This map is populated once on connect and is not kept in sync when the server emits later ParameterStatus messages (for example after SET TimeZone = ...). Treat these values as startup defaults, not a live view of the session state.

Implementations§

Source§

impl WireConn

Source

pub fn pid(&self) -> i32

Backend process ID assigned by the server. Useful for logging and for building a cancel token. The secret key that pairs with this PID is intentionally not exposed; use cancel_token() to obtain a token that can send a cancel request.

Source

pub fn auth_mechanism(&self) -> &'static str

Authentication mechanism the server selected during startup.

Returns one of "trust", "cleartext", "md5", "SCRAM-SHA-256", or "SCRAM-SHA-256-PLUS". "SCRAM-SHA-256-PLUS" confirms that tls-server-end-point channel binding was negotiated.

Source§

impl WireConn

Source

pub fn has_pending_data(&self) -> bool

Check if the connection has unconsumed data in the receive buffer.

Source

pub async fn connect( addr: &str, user: &str, password: &str, database: &str, ) -> Result<Self, PgWireError>

Connect to PostgreSQL and perform authentication.

Source

pub async fn connect_with_params( addr: &str, user: &str, password: &str, database: &str, startup_params: &[(&str, &str)], ) -> Result<Self, PgWireError>

Connect with additional startup parameters.

Parameters are sent in the startup message and appear in pg_stat_activity. Common parameters: application_name, client_encoding, options.

use pg_wired::WireConn;
let _conn = WireConn::connect_with_params(
    "127.0.0.1:5432", "user", "pass", "mydb",
    &[("application_name", "my-service")],
).await?;
Source

pub async fn connect_with_options( addr: &str, user: &str, password: &str, database: &str, startup_params: &[(&str, &str)], tls_mode: TlsMode, ) -> Result<Self, PgWireError>

Connect with startup parameters and an explicit TLS mode.

Uses the system root trust store (webpki-roots) for certificate verification. To override the trust store, supply a client certificate, or otherwise customize TLS, use Self::connect_with_tls_config.

Source

pub async fn connect_with_tls_config( addr: &str, user: &str, password: &str, database: &str, startup_params: &[(&str, &str)], tls_mode: TlsMode, tls_config: &TlsConfig, ) -> Result<Self, PgWireError>

Connect with startup parameters, an explicit TLS mode, and a custom TLS configuration (custom trust roots and/or a client certificate).

Only available when the tls feature is enabled.

Source

pub async fn send_raw(&mut self, buf: &[u8]) -> Result<(), PgWireError>

Send a raw buffer to the server (one write syscall).

Source

pub async fn recv_msg(&mut self) -> Result<BackendMsg, PgWireError>

Read one complete backend message from the connection. Uses an internal buffer to minimize read() syscalls.

Source

pub async fn collect_rows( &mut self, ) -> Result<(Vec<RawRow>, String), PgWireError>

Receive messages until ReadyForQuery, collecting DataRows. Returns (rows, command_tag).

Source

pub async fn describe_statement( &mut self, sql: &str, ) -> Result<(Vec<u32>, Vec<FieldDescription>), PgWireError>

Describe a SQL statement: sends Parse + Describe Statement + Sync, returns (parameter type OIDs, column field descriptions). Used by compile-time query checking macros.

Source

pub async fn drain_until_ready(&mut self) -> Result<(), PgWireError>

Drain messages until ReadyForQuery (error recovery). Also attempts to parse any remaining data in the receive buffer before declaring the connection closed.

Trait Implementations§

Source§

impl Debug for WireConn

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more