pub struct PgListener { /* private fields */ }Expand description
A connection dedicated to LISTEN/NOTIFY, plus ordinary query execution
on the same connection — mirroring how pylon.worker.IndexWorker and
pylon.cache.CacheInvalidationWorker both listen and run queries
(claim/mark-done/mark-failed, cache eviction) on the one connection
they’re constructed with today.
Implementations§
Source§impl PgListener
impl PgListener
Sourcepub async fn connect<F>(dsn: &str, on_notification: F) -> Result<Self>
pub async fn connect<F>(dsn: &str, on_notification: F) -> Result<Self>
Opens a new, non-pooled connection and spawns a background task
that drives it for the lifetime of the returned PgListener,
calling on_notification once per NOTIFY received (on any
channel — listen/unlisten control which channels the server
actually sends). The task exits when the connection is closed or
errors, which happens when the returned PgListener (and its
Client) is dropped.
Sourcepub fn types(&self) -> Arc<ExtensionOids> ⓘ
pub fn types(&self) -> Arc<ExtensionOids> ⓘ
The type OIDs currently discovered for this database — see
PgPool::types.
Sourcepub async fn refresh_types(&self) -> Result<()>
pub async fn refresh_types(&self) -> Result<()>
Re-runs type discovery on this listener’s own connection — see
PgPool::refresh_types. Nothing to invalidate alongside it: this
connection is unpooled and prepares each statement afresh.
pub async fn listen(&self, channel: &str) -> Result<()>
pub async fn unlisten(&self, channel: &str) -> Result<()>
pub async fn query_typed( &self, sql: &str, params: &[DecodedValue], ext: &ExtensionOids, ) -> Result<Vec<DecodedValue>>
Sourcepub async fn query_typed_named(
&self,
sql: &str,
params: &[DecodedValue],
ext: &ExtensionOids,
) -> Result<Vec<DecodedValue>>
pub async fn query_typed_named( &self, sql: &str, params: &[DecodedValue], ext: &ExtensionOids, ) -> Result<Vec<DecodedValue>>
Like query_typed, but decodes every column of every row by name
(DecodedValue::Object) instead of assuming column 0 is the whole
result — for hand-written queries with several named columns a
caller accesses by name.
Sourcepub async fn batch_execute(&self, sql: &str) -> Result<()>
pub async fn batch_execute(&self, sql: &str) -> Result<()>
Runs sql via the simple query protocol — no bind parameters, but
able to run several ;-separated statements in one call, matching
PgPool::batch_execute. Used for bootstrap DDL on this connection.
pub async fn execute_typed( &self, sql: &str, params: &[DecodedValue], ) -> Result<u64>
Auto Trait Implementations§
impl !Freeze for PgListener
impl !RefUnwindSafe for PgListener
impl !UnwindSafe for PgListener
impl Send for PgListener
impl Sync for PgListener
impl Unpin for PgListener
impl UnsafeUnpin for PgListener
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.