libpqxx  7.7.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-2022, 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 
25 namespace pqxx
26 {
28 
56 class PQXX_LIBEXPORT PQXX_NOVTABLE notification_receiver
57 {
58 public:
60 
64  notification_receiver(connection &c, std::string_view channel);
68  notification_receiver &operator=(notification_receiver const &) = delete;
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 
86 protected:
87  connection &conn() const noexcept { return m_conn; }
88 
89 private:
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:26
Connection to a database.
Definition: connection.hxx:185
Definition: notification.hxx:56
connection & conn() const noexcept
Definition: notification.hxx:87
std::string const & channel() const &
The channel that this receiver listens on.
Definition: notification.hxx:73