void osync_obj_engine_unref(OSyncObjEngine *engine) { osync_assert(engine); if (g_atomic_int_dec_and_test(&(engine->ref_count))) { while (engine->sink_engines) { OSyncSinkEngine *sinkengine = engine->sink_engines->data; osync_sink_engine_unref(sinkengine); engine->sink_engines = g_list_remove(engine->sink_engines, sinkengine); } while (engine->mapping_engines) { OSyncMappingEngine *mapping_engine = engine->mapping_engines->data; osync_mapping_engine_unref(mapping_engine); engine->mapping_engines = g_list_remove(engine->mapping_engines, mapping_engine); } if (engine->error) osync_error_unref(&engine->error); if (engine->objtype) g_free(engine->objtype); if (engine->mapping_table) osync_mapping_table_unref(engine->mapping_table); g_free(engine); } }
void validate_mapping_table(const char *testbed, unsigned int num_members, const char *uids[], unsigned int num_uids) { unsigned int member; unsigned int uid; osync_trace(TRACE_ENTRY, "%s(%s, %i, %p, %i)", __func__, testbed, num_members, uids, num_uids); char *path = g_strdup_printf("%s/configs/group/archive.db", testbed); OSyncMappingTable *maptable = mappingtable_load(path, "mockobjtype1", num_uids); g_free(path); /* check we have num_members mapping entries for each uid */ for (uid = 0; uid < num_uids; uid++) { for (member = 1; member <= num_members; member++) { check_mapping(maptable, member, -1, num_members, uids[uid]); } } osync_mapping_table_close(maptable); osync_mapping_table_unref(maptable); osync_trace(TRACE_EXIT, "%s", __func__); }