Fix so we actually get the NOTIFY.
[ccbs] / bigscreen / ccbs_bigscreen.cpp
1 #include <cstdio>
2 #include <unistd.h>
3 #include <pqxx/pqxx>
4 #include "glwindow.h"
5
6 /*
7  * A trigger that exits whenever it's trigged (used when we change big things
8  * such as starting a new tournament, and it's not really worth doing a clean
9  * change).
10  */
11 class ExitTrigger : pqxx::trigger {
12 public:
13         ExitTrigger(pqxx::connection_base &conn, const PGSTD::string &name)
14                 : pqxx::trigger(conn, name) {}
15         virtual ~ExitTrigger() throw () {}
16         
17         virtual void operator() (int pid)
18         {
19                 std::fprintf(stderr, "Received an exit trigger from pid %u\n", pid);
20                 exit(0);
21         }
22 };
23
24 int main(int argc, char **argv)
25 {
26         GLWindow glw("CCBS bigscreen", 800, 600, 32, false, 16, -1);
27         try {
28                 pqxx::connection conn("dbname=ccbs host=sql.samfundet.no user=ccbs password=GeT|>>B_");
29                 ExitTrigger et(conn, "bs_tournament_changed");
30                 
31                 sleep(1);
32
33                 pqxx::work t(conn, "trx");
34
35                 // fetch all songs
36                 pqxx::result res( t.exec("SELECT * FROM songs") );
37                 for (pqxx::result::const_iterator i = res.begin(); i != res.end(); ++i) {
38                         std::fprintf(stderr, "%s\n", i["title"].c_str());
39                 }
40                 t.commit();
41                 conn.get_notifs();
42                 sleep(1);
43         } catch (const std::exception &e) {
44                 std::fprintf(stderr, "Exception: %s\n", e.what());
45                 exit(1);
46         }
47         
48         return 0;
49 }