[jsonrpc-glib] server: add client foreach function
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [jsonrpc-glib] server: add client foreach function
- Date: Wed, 27 Dec 2017 11:38:45 +0000 (UTC)
commit ae6a206d35df93799d41521386d79a94f0cb6477
Author: Christian Hergert <chergert redhat com>
Date: Wed Dec 27 02:23:23 2017 -0800
server: add client foreach function
src/jsonrpc-server.c | 32 ++++++++++++++++++++++++++++++++
src/jsonrpc-server.h | 4 ++++
2 files changed, 36 insertions(+)
---
diff --git a/src/jsonrpc-server.c b/src/jsonrpc-server.c
index c91f859..e0371f1 100644
--- a/src/jsonrpc-server.c
+++ b/src/jsonrpc-server.c
@@ -360,3 +360,35 @@ jsonrpc_server_remove_handler (JsonrpcServer *self,
}
}
}
+
+/**
+ * jsonrpc_server_foreach:
+ * @self: a #JsonrpcServer
+ * @foreach_func: (scope call): a callback for each client
+ * @user_data: closure data for @foreach_func
+ *
+ * Calls @foreach_func for every client connected.
+ *
+ * Since: 3.28
+ */
+void
+jsonrpc_server_foreach (JsonrpcServer *self,
+ GFunc foreach_func,
+ gpointer user_data)
+{
+ JsonrpcServerPrivate *priv = jsonrpc_server_get_instance_private (self);
+ g_autofree gpointer *keys = NULL;
+ guint len;
+
+ g_return_if_fail (JSONRPC_IS_SERVER (self));
+ g_return_if_fail (foreach_func != NULL);
+
+ keys = g_hash_table_get_keys_as_array (priv->clients, &len);
+
+ for (guint i = 0; i < len; i++)
+ {
+ JsonrpcClient *client = keys[i];
+ g_assert (JSONRPC_IS_CLIENT (client));
+ foreach_func (client, user_data);
+ }
+}
diff --git a/src/jsonrpc-server.h b/src/jsonrpc-server.h
index c74833e..42cad86 100644
--- a/src/jsonrpc-server.h
+++ b/src/jsonrpc-server.h
@@ -75,6 +75,10 @@ guint jsonrpc_server_add_handler (JsonrpcServer *self,
JSONRPC_AVAILABLE_IN_3_26
void jsonrpc_server_remove_handler (JsonrpcServer *self,
guint handler_id);
+JSONRPC_AVAILABLE_IN_3_28
+void jsonrpc_server_foreach (JsonrpcServer *self,
+ GFunc foreach_func,
+ gpointer user_data);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]