[jsonrpc-glib] client: add JsonrpcClient::failed
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [jsonrpc-glib] client: add JsonrpcClient::failed
- Date: Wed, 27 Dec 2017 11:39:10 +0000 (UTC)
commit b49293ac2e4d1c73181b3e54e620ba75fdd8486d
Author: Christian Hergert <chergert redhat com>
Date: Wed Dec 27 03:20:20 2017 -0800
client: add JsonrpcClient::failed
This signal is useful for tracking when a client has failed and cleaning
up resources associated with it.
src/jsonrpc-client.c | 25 +++++++++++++++++++++++++
src/jsonrpc-client.h | 2 +-
2 files changed, 26 insertions(+), 1 deletion(-)
---
diff --git a/src/jsonrpc-client.c b/src/jsonrpc-client.c
index 636d429..383e46e 100644
--- a/src/jsonrpc-client.c
+++ b/src/jsonrpc-client.c
@@ -143,6 +143,7 @@ enum {
};
enum {
+ FAILED,
HANDLE_CALL,
NOTIFICATION,
N_SIGNALS
@@ -251,6 +252,8 @@ jsonrpc_client_panic (JsonrpcClient *self,
g_hash_table_iter_init (&iter, invocations);
while (g_hash_table_iter_next (&iter, NULL, (gpointer *)&task))
g_task_return_error (task, g_error_copy (error));
+
+ g_signal_emit (self, signals [FAILED], 0);
}
/*
@@ -413,6 +416,26 @@ jsonrpc_client_class_init (JsonrpcClientClass *klass)
g_object_class_install_properties (object_class, N_PROPS, properties);
/**
+ * JsonrpcClient::failed:
+ *
+ * The "failed" signal is called when the client has failed communication
+ * or the connection has been knowingly closed.
+ *
+ * Since: 3.28
+ */
+ signals [FAILED] =
+ g_signal_new ("failed",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (JsonrpcClientClass, failed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ g_signal_set_va_marshaller (signals [FAILED],
+ G_TYPE_FROM_CLASS (klass),
+ g_cclosure_marshal_VOID__VOIDv);
+
+ /**
* JsonrpcClient::handle-call:
* @self: A #JsonrpcClient
* @method: (not nullable): the method name
@@ -1187,6 +1210,8 @@ jsonrpc_client_close (JsonrpcClient *self,
g_task_return_error (task, g_error_copy (local_error));
}
+ g_signal_emit (self, signals [FAILED], 0);
+
return ret;
}
diff --git a/src/jsonrpc-client.h b/src/jsonrpc-client.h
index d596600..a9c5c94 100644
--- a/src/jsonrpc-client.h
+++ b/src/jsonrpc-client.h
@@ -41,8 +41,8 @@ struct _JsonrpcClientClass
const gchar *method,
GVariant *id,
GVariant *params);
+ void (*failed) (JsonrpcClient *self);
- gpointer _reserved1;
gpointer _reserved2;
gpointer _reserved3;
gpointer _reserved4;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]