static int amagent_init(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { /* main process init */ int status; apr_status_t rv = APR_SUCCESS; void *data; #define AMAGENT_INIT_ONCE "AMAGENT_INIT_ONCE" apr_pool_userdata_get(&data, AMAGENT_INIT_ONCE, s->process->pool); if (!data) { /* module has already been initialized */ apr_pool_userdata_set((const void *) 1, AMAGENT_INIT_ONCE, apr_pool_cleanup_null, s->process->pool); return rv; } apr_pool_cleanup_register(pconf, s, amagent_cleanup, apr_pool_cleanup_null); ap_add_version_component(pconf, MODINFO); LOG_S(APLOG_DEBUG, s, "amagent_init() %d", getpid()); #ifndef _WIN32 status = am_init(); if (status != AM_SUCCESS) { rv = APR_EINIT; LOG_S(APLOG_ERR, s, "amagent_init() status: %s", am_strerror(status)); } #endif return rv; }
/** * Set up everything (shared memory, etc.) so we can log, just as we would if we were * really running (as opposed to running in test harness mode). */ void logging_setup(int logging_level) { // destroy the cache, if it exists am_cache_destroy(); assert_int_equal(am_init(AM_DEFAULT_AGENT_ID, NULL), AM_SUCCESS); am_init_worker(AM_DEFAULT_AGENT_ID); sprintf(log_file_name, "log%d", rand() % 1000000); // Note that we need a valid audit file name, even though we never audit sprintf(audit_file_name, "aud%d", rand() % 1000000); am_log_register_instance(getpid(), log_file_name, logging_level, TEN_MB, audit_file_name, AM_LOG_LEVEL_AUDIT, ONE_MB, NULL); am_init_worker(AM_DEFAULT_AGENT_ID); }
int init(const platform_env_t* env) { paused = 0; LOGI("Environment:\n Platform: %d\n Assets: %s\n Shared: %s\n Config: %s\n Tmp: %s\n", env->platform, env->assets_dir, env->shared_dir, env->config_dir, env->tmp_dir); io_driver_t* assets = NULL; io_driver_t* config = NULL; io_driver_t* tmp = NULL; io_driver_t* shared = NULL; if (io_init(&io) != 0 || #ifdef ANDROID io_driver_apk_init(&assets, env->platform_specific) != 0 || #else io_driver_fs_init(&assets, env->assets_dir) != 0 || #endif io_driver_fs_init(&config, env->config_dir) != 0 || io_driver_fs_init(&shared, env->shared_dir) != 0 || io_driver_fs_init(&tmp, env->tmp_dir) != 0 || io_bind(io, "/config", config) || io_bind(io, "/tmp", tmp) || io_bind(io, "/shared", shared) || io_bind(io, "/assets", assets) ) { LOGE("Error initializing I/O system"); return -1; } io_set_working_dir(io, "/assets"); io_set_default(io); if (gfx_init(&gfx) != 0) { LOGE("Error initializing GFX system"); return -1; } font_info_t info = { .name = "fonts/default.ttf", .face_index = 0, .width = 0, .height = 14 * 64, .dpi_x = 0, .dpi_y = 72, }; if (font_init(&font, &info, NULL) != 0) { LOGE("Error loading font"); return -1; } info.height = 22 * 64; if (font_init(&big_font, &info, NULL) != 0) { LOGE("Error loading font"); return -1; } if (atlases_load(&atlases, "atlases.dat") != 0) { LOGE("Error loading atlases metadata"); return -1; } if (sprites_load(&sprites, "sprites.dat") != 0) { LOGE("Error loading sprites metadata"); return -1; } stats_load(&global_stats, "/config/player.dat"); if (am_init(&am, achievements_get_all(), achievements_get_count(), achievement_progress, achievement_unlocked)) { LOGE("Unable to initialize achievements manager"); return -1; } achievements_context.am = am; am_load(am, "/config/achievements.dat"); timestamp_set(&timer); timestamp_set(&fps_timer); push_screen(SCREEN_MAIN_MENU); return 0; } void shutdown() { LOGI("shutdown"); atlases_free(atlases); sprites_free(sprites); font_free(font); font_free(big_font); gfx_free(gfx); stats_dump(&global_stats); stats_save(&global_stats, "/config/player.dat"); stats_free(&global_stats); if (am != NULL) { am_save(am, "/config/achievements.dat"); am_dump(am); am_free(am); am = NULL; } io_free(io); io = NULL; atlases = NULL; sprites = NULL; font = NULL; big_font = NULL; gfx = NULL; }