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__); }
void osync_obj_engine_finalize(OSyncObjEngine *engine) { OSyncMappingEngine *mapping_engine; osync_trace(TRACE_ENTRY, "%s(%p)", __func__, engine); engine->slowsync = FALSE; engine->written = FALSE; engine->sink_errors = 0; engine->sink_connects = 0; engine->sink_disconnects = 0; engine->sink_get_changes = 0; engine->sink_sync_done = 0; engine->sink_written = 0; 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->conflicts) { mapping_engine = engine->conflicts->data; /* No need to unref the mapping engine. They get unref while emptying the mapping_engines list. See next loop. */ engine->conflicts = g_list_remove(engine->conflicts, mapping_engine); } while (engine->mapping_engines) { 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->mapping_table) osync_mapping_table_close(engine->mapping_table); osync_trace(TRACE_EXIT, "%s", __func__); }