m_ShuttingDown = true;
- DynamicObject::DeactivateObjects();
-
#ifdef _WIN32
WSACleanup();
#endif /* _WIN32 */
DynamicObject::FinishTx();
DynamicObject::DeactivateObjects();
-
- assert(m_Instance == NULL);
} catch (const exception& ex) {
Logger::Write(LogCritical, "base", "---");
Logger::Write(LogCritical, "base", "Exception: " + Utility::GetTypeName(typeid(ex)));
lt_dlinit();
#endif /* _WIN32 */
+ /* This must be done before calling any other functions
+ * in the base library. */
Application::SetMainThread();
#ifdef _WIN32
return EXIT_FAILURE;
}
- String configFile = argv[2];
-
String componentDirectory = Utility::DirName(Application::GetExePath(argv[0])) + "/../lib/icinga2";
Component::AddSearchDir(componentDirectory);
DynamicObject::BeginTx();
/* load config file */
+ String configFile = argv[2];
vector<ConfigItem::Ptr> configItems = ConfigCompiler::CompileFile(configFile);
Logger::Write(LogInformation, "icinga", "Executing config items...");
if (!app)
throw_exception(runtime_error("Configuration must create an Application object."));
+ /* The application class doesn't need to know about the "-c configFile"
+ * command-line arguments. */
return app->Run(argc - 2, &(argv[2]));
}