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);
  }
}
Exemplo n.º 2
0
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__);
}