Ejemplo n.º 1
0
void midgard_test_lock_root_objects(MidgardConnection *mgd, MidgardUser *user)
{
	g_assert(user != NULL);
	/* Lock root user */
	
	MgdObject *person = midgard_user_get_person(user);
	g_assert(person != NULL);

	if(!midgard_object_is_locked(person)) {
		gboolean user_locked = midgard_object_lock(person);
		if(!user_locked)
			g_print("Can not lock because %s \n", midgard_connection_get_error_string(mgd));
		g_assert(user_locked != FALSE);
	}

	/* Lock its membership */
	/* FIXME, it's naive to get member with id 1, but will work */

	GValue val = {0, };
	g_value_init(&val, G_TYPE_UINT);
	g_value_set_uint(&val, 1);	

	MgdObject *member = midgard_object_new(mgd->mgd, "midgard_member", &val);
	g_assert(member != NULL);

	g_value_unset(&val);

	if(!midgard_object_is_locked(member)) {
		gboolean member_locked = midgard_object_lock(member);
		g_assert(member_locked != FALSE);
	}

	g_object_unref(member);
}
Ejemplo n.º 2
0
static gboolean 
_midgard_workspace_update (const MidgardWorkspaceManager *manager, MidgardWorkspaceStorage *ws, GError **error)
{
	g_return_val_if_fail (manager != NULL, FALSE);
	g_return_val_if_fail (ws != NULL, FALSE);

	MidgardWorkspace *self = MIDGARD_WORKSPACE (ws);
	MidgardConnection *mgd = manager->priv->mgd;
	MGD_OBJECT_CNC (self) = mgd;
	g_return_val_if_fail (mgd != NULL, FALSE);

	if (self->priv->id == 0) {
		g_set_error (error, MIDGARD_WORKSPACE_STORAGE_ERROR, MIDGARD_WORKSPACE_STORAGE_ERROR_INVALID_VALUE,
					"Invalid value ID for workspace"); 
		return FALSE;
	}

	gchar *workspace_name = self->priv->name;
	if (workspace_name == NULL 
			|| (workspace_name != NULL && *workspace_name == '\0')) {
		g_set_error (error, MIDGARD_WORKSPACE_STORAGE_ERROR, MIDGARD_WORKSPACE_STORAGE_ERROR_INVALID_VALUE,
					"Invalid (empty or null) workspace's name"); 
		return FALSE;
	}

	/* Check duplicate */
	const MidgardWorkspaceContext *context = midgard_workspace_get_context (self);
	if (context) {
		MidgardWorkspace *ws_dup = (MidgardWorkspace *) midgard_workspace_storage_get_workspace_by_name (MIDGARD_WORKSPACE_STORAGE (context), workspace_name);	
		if (ws_dup 
				&& g_str_equal (ws_dup->priv->name, workspace_name)
				&& ws_dup->priv->id != self->priv->id) {
			g_object_unref (ws_dup);
			g_set_error (error, MIDGARD_WORKSPACE_STORAGE_ERROR, MIDGARD_WORKSPACE_STORAGE_ERROR_NAME_EXISTS,
					"Workspace with given '%s' name already exists in this context", workspace_name); 
			return FALSE;
		}

		if (g_str_equal (ws_dup->priv->name, workspace_name)) {
			g_object_unref (ws_dup);
			return TRUE;
		}		

		if (ws_dup)
			g_object_unref (ws_dup);
	}

	if (midgard_core_query_update_dbobject_record (MIDGARD_DBOBJECT (self), NULL)) {
		midgard_core_workspace_list_all (mgd, FALSE);
		return TRUE;
	}

	g_set_error (error, MIDGARD_GENERIC_ERROR, MGD_ERR_INTERNAL, "%s", midgard_connection_get_error_string (mgd));

	return FALSE;
}
Ejemplo n.º 3
0
Archivo: prog.c Proyecto: piotras/pkgs
int main()
{
	midgard_init();

	MidgardConfig *config = midgard_config_new();
	g_object_set (config, 
			"dbtype", "SQLite", 
			"dbdir", "/tmp",
			"database", "MidgardStaticDB", 
			NULL);
	MidgardConnection *mgd = midgard_connection_new();
	midgard_connection_open_config (mgd, config, NULL);
	g_print("Connected '%s' \n", midgard_connection_get_error_string(mgd));

	midgard_storage_create_base_storage(mgd);
	g_print("Created storage: '%s' \n", midgard_connection_get_error_string(mgd));

	return 0;
}
Ejemplo n.º 4
0
static PHP_METHOD(midgard_connection, get_error_string)
{
	RETVAL_NULL();
	/* Disable debug log for function call.
	 * It resets error. Keep it like this for backward compatibility */
	/* CHECK_MGD; */

	if (zend_parse_parameters_none() == FAILURE)
		return;

	MidgardConnection *mgd =__midgard_connection_get_ptr(getThis());
	const char *err_string = midgard_connection_get_error_string(mgd);

	RETURN_STRING((gchar *)err_string, 1);
}
Ejemplo n.º 5
0
Archivo: pool.c Proyecto: piotras/MDTs
static void 
pool_func (gpointer data, gpointer user_data) 
{
	MidgardObject *object = MIDGARD_OBJECT (data);
	MidgardConnection *mgd = MIDGARD_CONNECTION (user_data);
	g_print ("Sleep in a thread [%p] \n", g_thread_self());
	g_usleep (3000000);
	static guint i = 0;
	static GMutex mutex;
	g_mutex_lock (&mutex);
	i++;
	g_mutex_unlock (&mutex);
	g_print ("(%d) Create object, THREAD [%p] \n", i, g_thread_self());
	midgard_object_create (object);
	g_print ("'%s' \n", midgard_connection_get_error_string (mgd));
	return;
}