OSyncMappingTable *mappingtable_load(const char *path, const char *objtype, unsigned int num_mappings) { OSyncError *error = NULL; OSyncMappingTable *table = NULL; OSyncArchive *archive = NULL; osync_trace(TRACE_ENTRY, "%s(%s, %s, %i)", __func__, path, objtype, num_mappings); table = osync_mapping_table_new(&error); fail_unless(table != NULL, NULL); fail_unless(error == NULL, NULL); archive = osync_archive_new(path, &error); fail_unless(archive != NULL, NULL); fail_unless(error == NULL, NULL); fail_unless(osync_mapping_table_load(table, archive, objtype, &error), NULL); fail_unless(error == NULL, NULL); osync_archive_unref(archive); fail_unless(osync_mapping_table_num_mappings(table) == num_mappings, NULL); osync_trace(TRACE_EXIT, "%s: %p", __func__, table); return table; }
OSyncObjEngine *osync_obj_engine_new(OSyncEngine *parent, const char *objtype, OSyncFormatEnv *formatenv, OSyncError **error) { OSyncObjEngine *engine = NULL; osync_assert(parent); osync_assert(objtype); osync_trace(TRACE_ENTRY, "%s(%p, %s, %p, %p)", __func__, parent, objtype, formatenv, error); engine = osync_try_malloc0(sizeof(OSyncObjEngine), error); if (!engine) goto error; engine->ref_count = 1; engine->slowsync = FALSE; engine->written = FALSE; /* we dont reference the parent to avoid circular dependencies. This object is completely * dependent on the engine anyways */ engine->parent = parent; engine->objtype = g_strdup(objtype); engine->formatenv = formatenv; engine->mapping_table = osync_mapping_table_new(error); if (!engine->mapping_table) goto error_free_engine; engine->archive = osync_engine_get_archive(parent); osync_trace(TRACE_EXIT, "%s: %p", __func__, engine); return engine; error_free_engine: osync_obj_engine_unref(engine); error: osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(error)); return NULL; }