Example #1
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__);
}
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__);
}