[jsonrpc-glib/wip/client-accepted] Add JsonrpcServer::client-accepted
- From: Patrick Griffis <pgriffis src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [jsonrpc-glib/wip/client-accepted] Add JsonrpcServer::client-accepted
- Date: Thu, 8 Feb 2018 00:55:28 +0000 (UTC)
commit ffc4fa4b12536f4cf3b54d49b1ffb6f2ce1af038
Author: Patrick Griffis <tingping tingping se>
Date: Wed Feb 7 19:54:31 2018 -0500
Add JsonrpcServer::client-accepted
This is useful for deviced which wants to track the lifetime of clients.
meson.build | 2 +-
src/jsonrpc-server.c | 22 ++++++++++++++++++++++
src/jsonrpc-server.h | 3 ++-
3 files changed, 25 insertions(+), 2 deletions(-)
---
diff --git a/meson.build b/meson.build
index 113c20e..c224e61 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
project('jsonrpc-glib', 'c',
- version: '3.27.90',
+ version: '3.27.91',
license: 'LGPLv2.1+',
meson_version: '>= 0.40.1',
default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ],
diff --git a/src/jsonrpc-server.c b/src/jsonrpc-server.c
index 97e33cf..46a5b30 100644
--- a/src/jsonrpc-server.c
+++ b/src/jsonrpc-server.c
@@ -55,6 +55,7 @@ G_DEFINE_TYPE_WITH_PRIVATE (JsonrpcServer, jsonrpc_server, G_TYPE_OBJECT)
enum {
HANDLE_CALL,
NOTIFICATION,
+ CLIENT_ACCEPTED,
N_SIGNALS
};
@@ -178,6 +179,25 @@ jsonrpc_server_class_init (JsonrpcServerClass *klass)
JSONRPC_TYPE_CLIENT,
G_TYPE_STRING | G_SIGNAL_TYPE_STATIC_SCOPE,
G_TYPE_VARIANT);
+
+ /**
+ * JsonrpcServer::client-accepted:
+ * @self: A #JsonrpcServer
+ * @client: A #JsonrpcClient
+ *
+ * This signal is emitted when a new client has been accepted.
+ *
+ * Since: 3.28
+ */
+ signals [CLIENT_ACCEPTED] =
+ g_signal_new ("client-accepted",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (JsonrpcServerClass, client_accepted),
+ NULL, NULL, NULL,
+ G_TYPE_NONE,
+ 1,
+ JSONRPC_TYPE_CLIENT);
}
static void
@@ -311,6 +331,8 @@ jsonrpc_server_accept_io_stream (JsonrpcServer *self,
g_hash_table_insert (priv->clients, client, NULL);
jsonrpc_client_start_listening (client);
+
+ g_signal_emit (self, signals [CLIENT_ACCEPTED], 0, client);
}
static gint
diff --git a/src/jsonrpc-server.h b/src/jsonrpc-server.h
index 42cad86..323c643 100644
--- a/src/jsonrpc-server.h
+++ b/src/jsonrpc-server.h
@@ -43,6 +43,8 @@ struct _JsonrpcServerClass
JsonrpcClient *client,
const gchar *method,
GVariant *params);
+ void (*client_accepted) (JsonrpcServer *self,
+ JsonrpcClient *client);
gpointer _reserved1;
gpointer _reserved2;
@@ -51,7 +53,6 @@ struct _JsonrpcServerClass
gpointer _reserved5;
gpointer _reserved6;
gpointer _reserved7;
- gpointer _reserved8;
};
typedef void (*JsonrpcServerHandler) (JsonrpcServer *self,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]