[X2Go-Commits] [libx2goclient] 26/44: src/x2goclient-network.{c, h}: make parent_connection function pointer a read-only property called connect-function acting on an instance private called connect_function, add getter and setter.

git-admin at x2go.org git-admin at x2go.org
Fri Sep 18 01:55:39 CEST 2020


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository libx2goclient.

commit 7ee08cf186d31789e6c496f199ee96d04c6847d5
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Wed Aug 5 14:55:33 2020 +0200

    src/x2goclient-network.{c,h}: make parent_connection function pointer a read-only property called connect-function acting on an instance private called connect_function, add getter and setter.
    
    This makes it way safer to use, especially since it can now be truly
    immutable, only set once in this class's initialization.
---
 src/x2goclient-network.c | 18 ++++++++++++++++--
 src/x2goclient-network.h |  1 -
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/x2goclient-network.c b/src/x2goclient-network.c
index d076817..6ba5b24 100644
--- a/src/x2goclient-network.c
+++ b/src/x2goclient-network.c
@@ -55,6 +55,7 @@ typedef struct X2GoClientNetworkPrivate_ {
   X2GoClientNetworkOptions *options;
   gchar *session_path; /* Will eventually be replaced with a session object, probably. */
   gboolean connected;
+  gboolean (*connect_func) (X2GoClientNetwork * const self, GError ** const gerr);
 } X2GoClientNetworkPrivate;
 
 G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (X2GoClientNetwork, x2goclient_network, G_TYPE_OBJECT);
@@ -73,6 +74,7 @@ enum {
   X2GO_NET_PROP_OPTIONS,
   X2GO_NET_PROP_SESSION_PATH,
   X2GO_NET_PROP_CONNECTED,
+  X2GO_NET_PROP_CONN_FUNC,
   X2GO_NET_N_PROPERTIES
 };
 
@@ -129,9 +131,12 @@ static void x2goclient_network_class_init (X2GoClientNetworkClass * const klass)
                                                                       FALSE,
                                                                       G_PARAM_STATIC_STRINGS | G_PARAM_READABLE);
 
-  g_object_class_install_properties (object_class, X2GO_NET_N_PROPERTIES, net_obj_properties);
+  net_obj_properties[X2GO_NET_PROP_CONN_FUNC] = g_param_spec_pointer ("connect-function", _("Pointer to this instance's connect function"),
+                                                                      _("A pointer to the instance's connect function. "
+                                                                        "This is supposed to be immutable."),
+                                                                      G_PARAM_STATIC_STRINGS | G_PARAM_READABLE);
 
-  klass->parent_connect = &x2goclient_network_connect;
+  g_object_class_install_properties (object_class, X2GO_NET_N_PROPERTIES, net_obj_properties);
 }
 
 static void x2goclient_network_init (X2GoClientNetwork * const self) {
@@ -141,6 +146,7 @@ static void x2goclient_network_init (X2GoClientNetwork * const self) {
   priv->options = NULL;
   priv->session_path = NULL;
   priv->connected = FALSE;
+  priv->connect_func = &x2goclient_network_connect;
 }
 
 static void x2goclient_network_dispose (GObject * const object) {
@@ -162,6 +168,8 @@ static void x2goclient_network_finalize (GObject * const object) {
   g_free (priv->session_path);
   priv->session_path = NULL;
 
+  priv->connect_func = NULL;
+
   (G_OBJECT_CLASS (x2goclient_network_parent_class))->finalize (object);
 }
 
@@ -228,6 +236,9 @@ static void x2goclient_network_set_property (GObject * const object, guint prop_
     case (X2GO_NET_PROP_CONNECTED):
                                     priv->connected = g_value_get_boolean (value);
                                     break;
+    case (X2GO_NET_PROP_CONN_FUNC):
+                                    priv->connect_func = g_value_get_pointer (value);
+                                    break;
     default:
              G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, param_spec);
              break;
@@ -254,6 +265,9 @@ static void x2goclient_network_get_property (GObject * const object, const guint
     case (X2GO_NET_PROP_CONNECTED):
                                     g_value_set_boolean (value, priv->connected);
                                     break;
+    case (X2GO_NET_PROP_CONN_FUNC):
+                                    g_value_set_pointer (value, priv->connect_func);
+                                    break;
     default:
              G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, param_spec);
              break;
diff --git a/src/x2goclient-network.h b/src/x2goclient-network.h
index 5e0c15d..cf96c35 100644
--- a/src/x2goclient-network.h
+++ b/src/x2goclient-network.h
@@ -59,7 +59,6 @@ struct _X2GoClientNetworkClass {
 
   /*< private >*/
   GSocketAddress* (*parse_sockspec) (X2GoClientNetwork * const self, const GString * const sockspec);
-  gboolean (*parent_connect) (X2GoClientNetwork * const self, GError ** const gerr);
 
   /* We might need a lot more functions... */
   gpointer padding[50];

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/libx2goclient.git


More information about the x2go-commits mailing list