Struct PGNotifier

Source
pub struct PGNotifier {
    pub client: Client,
    /* private fields */
}
Expand description

Forwards PostgreSQL NOTIFY and RAISE commands to subscribers.

Fields§

§client: Client

Implementations§

Source§

impl PGNotifier

Source

pub fn spawn<S, T>(client: PGClient, conn: PGConnection<S, T>) -> Self
where S: AsyncRead + AsyncWrite + Unpin + Send + Sync + 'static, T: AsyncRead + AsyncWrite + Unpin + Send + Sync + 'static,

Spawns a new postgres client/connection pair.

Source

pub async fn subscribe_notify<F>( &mut self, channel: impl Into<String>, callback: F, ) -> Result<(), Error>
where F: Fn(&PGNotify) + Send + Sync + 'static,

Subscribes to notifications on a particular channel.

The call will issue the LISTEN command to PostgreSQL. There is currently no mechanism to unsubscribe even though postgres does supports UNLISTEN.

Source

pub fn subscribe_raise( &mut self, callback: impl Fn(&PGRaise) + Send + Sync + 'static, )

Subscribes to RAISE <level> <message> notifications.

There is currently no mechanism to unsubscribe. This would only require returning some form of “token”, which could be used to unsubscribe.

Source

pub fn capture_log(&self) -> Option<Vec<PGRaise>>

Returns the accumulated log since the last capture.

If the code being called issues many RAISE commands and you never call capture_log, then eventually, you might run out of memory. To ensure that this does not happen, you might consider using with_captured_log instead.

Source

pub async fn with_captured_log<F, T>( &self, f: F, ) -> Result<(T, Vec<PGRaise>), Error>
where F: AsyncFnOnce(&PGClient) -> Result<T, Error>,

Given an async closure taking the postgres client, returns the result of said closure along with the accumulated log since the beginning of the closure.

If you use query pipelining then collect the logs for all queries in the pipeline. Otherwise, the logs might not be what you expect.

Trait Implementations§

Source§

impl Drop for PGNotifier

Source§

fn drop(&mut self)

Executes the destructor for this type. 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