static void gda_xa_transaction_get_property (GObject *object, guint param_id, GValue *value, GParamSpec *pspec) { GdaXaTransaction *xa_trans; xa_trans = GDA_XA_TRANSACTION (object); if (xa_trans->priv) { switch (param_id) { case PROP_FORMAT_ID: g_value_set_uint (value, xa_trans->priv->xid.format); break; case PROP_TRANSACT_ID: { gchar *tmp; tmp = g_new (gchar, xa_trans->priv->xid.gtrid_length + 1); memcpy (tmp, xa_trans->priv->xid.data, xa_trans->priv->xid.gtrid_length); /* Flawfinder: ignore */ tmp [xa_trans->priv->xid.gtrid_length] = 0; g_value_take_string (value, tmp); break; } default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } } }
static void gda_xa_transaction_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec) { GdaXaTransaction *xa_trans; xa_trans = GDA_XA_TRANSACTION (object); GdaXaTransactionPrivate *priv = gda_xa_transaction_get_instance_private (xa_trans); if (priv) { switch (param_id) { case PROP_FORMAT_ID: priv->xid.format = g_value_get_uint (value); break; case PROP_TRANSACT_ID: { const gchar *tmp; gint len; tmp = g_value_get_string (value); if (!tmp) { gchar *dtmp; dtmp = g_strdup_printf ("gda_global_transaction_%p", xa_trans); len = strlen (dtmp); g_assert (len <= 64); priv->xid.gtrid_length = len; memcpy (priv->xid.data, dtmp, len); /* Flawfinder: ignore */ g_free (dtmp); } else { len = strlen (tmp); if (len > 64) g_warning (_("Global transaction ID can not have more than 64 bytes")); else { priv->xid.gtrid_length = len; memcpy (priv->xid.data, tmp, len); /* Flawfinder: ignore */ } } break; } default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; } } }