コード例 #1
0
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;
                }
        }
}
コード例 #2
0
ファイル: gda-xa-transaction.c プロジェクト: GNOME/libgda
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;
                }
        }
}