Engine* engine_new(Configuration* config) { MAGIC_ASSERT(config); /* Don't do anything in this function that will cause a log message. The * global engine is still NULL since we are creating it now, and logging * here will cause an assertion error. */ Engine* engine = g_new0(Engine, 1); MAGIC_INIT(engine); engine->config = config; engine->random = random_new(config->randomSeed); engine->runTimer = g_timer_new(); /* initialize the singleton-per-thread worker class */ engine->workerKey.index = 0; engine->preloadKey.index = 0; /* holds all events if single-threaded, and non-node events otherwise. */ engine->masterEventQueue = asyncpriorityqueue_new((GCompareDataFunc)shadowevent_compare, NULL, (GDestroyNotify)shadowevent_free); engine->workersIdle = g_cond_new(); engine->engineIdle = g_mutex_new(); engine->registry = registry_new(); registry_register(engine->registry, SOFTWARE, NULL, software_free); registry_register(engine->registry, CDFS, NULL, cdf_free); registry_register(engine->registry, PLUGINPATHS, g_free, g_free); engine->minTimeJump = config->minRunAhead * SIMTIME_ONE_MILLISECOND; engine->internet = internetwork_new(); engine->lock = g_mutex_new(); /* get the raw speed of the experiment machine */ gchar* contents = NULL; gsize length = 0; GError* error = NULL; if(!g_file_get_contents(CONFIG_CPU_MAX_FREQ_FILE, &contents, &length, &error)) { engine->rawFrequencyKHz = 0; } else { engine->rawFrequencyKHz = (guint)atoi(contents); } return engine; }
gboolean ui_connection_try_register(UiConnection *self) { if (self->registry->info->user_id) { return registry_register(self->registry); } return FALSE; }
gboolean ui_connection_try_register(UiConnection *self) { if (self->registry->info->user_id) { gboolean success = registry_register(self->registry); if (success) { registry_start_pinging(self->registry); } return success; } return FALSE; }