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); }
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; }
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; }
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); }
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; }