aboutsummaryrefslogtreecommitdiff
path: root/src/Listen.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-01-30 13:20:27 +0100
committerMax Kellermann <max@duempel.org>2013-01-30 14:16:04 +0100
commitfa51db449fdb9558a4cb4542a86437ac9dd3ddbd (patch)
tree7ecc27850e582fc6b4233bd316dcb079d0702341 /src/Listen.cxx
parentcb9a05ac77034fdcefc0d574e768afe0a1b86327 (diff)
ServerSocket: replace callback with virtual method
Diffstat (limited to 'src/Listen.cxx')
-rw-r--r--src/Listen.cxx24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/Listen.cxx b/src/Listen.cxx
index e56a0ead..26c9e100 100644
--- a/src/Listen.cxx
+++ b/src/Listen.cxx
@@ -36,16 +36,20 @@
#define DEFAULT_PORT 6600
-static ServerSocket *listen_socket;
-int listen_port;
+class ClientListener final : public ServerSocket {
+public:
+ ClientListener():ServerSocket(*main_loop) {}
+
+private:
+ virtual void OnAccept(int fd, const sockaddr &address,
+ size_t address_length, int uid) {
+ client_new(*main_loop, *global_partition,
+ fd, &address, address_length, uid);
+ }
+};
-static void
-listen_callback(int fd, const struct sockaddr *address,
- size_t address_length, int uid, G_GNUC_UNUSED void *ctx)
-{
- client_new(*main_loop, *global_partition,
- fd, address, address_length, uid);
-}
+static ClientListener *listen_socket;
+int listen_port;
static bool
listen_add_config_param(unsigned int port,
@@ -98,7 +102,7 @@ listen_global_init(GError **error_r)
bool success;
GError *error = NULL;
- listen_socket = new ServerSocket(*main_loop, listen_callback, nullptr);
+ listen_socket = new ClientListener();
if (listen_systemd_activation(&error))
return true;