--- /dev/null
+#include "flagtrigger.h"
+
+FlagTrigger::FlagTrigger(pqxx::connection_base &conn, const PGSTD::string &name)
+ : pqxx::trigger(conn, name), flag(false) {}
+FlagTrigger::~FlagTrigger() throw () {}
+
+void FlagTrigger::operator() (int pid)
+{
+ flag = true;
+ std::fprintf(stderr, "Received a flag trigger from pid %u\n", pid);
+}
+
+bool FlagTrigger::get_flag() const
+{
+ return flag;
+}
+
+void FlagTrigger::reset_flag()
+{
+ flag = false;
+}
--- /dev/null
+#ifndef _FLAGTRIGGER_H
+#define _FLAGTRIGGER_H 1
+
+#include <pqxx/trigger>
+
+/* A trigger that sets a flag whenever it's trigged. */
+class FlagTrigger : pqxx::trigger {
+private:
+ bool flag;
+
+public:
+ FlagTrigger(pqxx::connection_base &conn, const PGSTD::string &name);
+ virtual ~FlagTrigger() throw ();
+
+ virtual void operator() (int pid);
+ bool get_flag() const;
+ void reset_flag();
+};
+
+#endif /* !defined( _FLAGTRIGGER_H) */