libpqxx 7.8.1
notification.hxx
1/* Definition of the pqxx::notification_receiver functor interface.
2 *
3 * pqxx::notification_receiver handles incoming notifications.
4 *
5 * DO NOT INCLUDE THIS FILE DIRECTLY; include pqxx/notification instead.
6 *
7 * Copyright (c) 2000-2023, Jeroen T. Vermeulen.
8 *
9 * See COPYING for copyright license. If you did not receive a file called
10 * COPYING with this source code, please notify the distributor of this
11 * mistake, or contact the author.
12 */
13#ifndef PQXX_H_NOTIFICATION
14#define PQXX_H_NOTIFICATION
15
16#if !defined(PQXX_HEADER_PRE)
17# error "Include libpqxx headers as <pqxx/header>, not <pqxx/header.hxx>."
18#endif
19
20#include <string>
21
22#include "pqxx/types.hxx"
23
24
25namespace pqxx
26{
28
56class PQXX_LIBEXPORT PQXX_NOVTABLE notification_receiver
57{
58public:
60
64 notification_receiver(connection &c, std::string_view channel);
70 virtual ~notification_receiver();
71
73 [[nodiscard]] std::string const &channel() const & { return m_channel; }
74
75 // TODO: Change API to take payload as zview instead of string ref.
77
84 virtual void operator()(std::string const &payload, int backend_pid) = 0;
85
86protected:
87 connection &conn() const noexcept { return m_conn; }
88
89private:
90 connection &m_conn;
91 std::string m_channel;
92};
93} // namespace pqxx
94#endif
The home of all libpqxx classes, functions, templates, etc.
Definition array.hxx:33
Connection to a database.
Definition connection.hxx:253
Definition notification.hxx:57
notification_receiver(notification_receiver const &)=delete
Register the receiver with a connection.
std::string const & channel() const &
The channel that this receiver listens on.
Definition notification.hxx:73
virtual void operator()(std::string const &payload, int backend_pid)=0
Overridable: action to invoke when notification arrives.
connection & conn() const noexcept
Definition notification.hxx:87
notification_receiver & operator=(notification_receiver const &)=delete
Register the receiver with a connection.