aboutsummaryrefslogtreecommitdiff
path: root/src/Listen.cxx
diff options
context:
space:
mode:
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;