本文整理汇总了C++中DBManager::init方法的典型用法代码示例。如果您正苦于以下问题:C++ DBManager::init方法的具体用法?C++ DBManager::init怎么用?C++ DBManager::init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DBManager
的用法示例。
在下文中一共展示了DBManager::init方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: init
// ==========================================================================
// METHOD ModuleDB::init
//
// TODO: detect double class registration
// ==========================================================================
bool ModuleDB::init (const value &reloadmods)
{
value cache;
DBManager db;
if (! db.init ())
{
log::write (log::critical, "ModuleDB", "Could not init database");
CORE->delayedexiterror ("Error initializing database");
return false;
}
// Indicate to the database that we're bypassing the authorization layer
// for this primary exercise.
db.enableGodMode();
// Load the module.cache file, we will use this to track module versions
// between opencore runs.
string cachepath = PATH_CACHES;
cachepath.strcat ("/module.cache");
// Make sure the module cache exists at all, if not, we will create
// an empty cache.
if (! fs.exists (cachepath))
{
log::write (log::info, "ModuleDB", "No module cache found, assuming "
"new install");
cache["modules"]; // Initialize cache's tree structure.
// If we can't write, consider that a dealbreaker.
if (! cache.saveshox (cachepath))
{
log::write (log::critical, "ModuleDB", "Can not write to module "
"cache at <%s>, bailing." %format (cachepath));
CORE->delayedexiterror ("Error saving module.cache");
sleep (2);
exit (1);
}
}
else
{
cache.loadshox (cachepath);
if (! cache.count())
{
log::write (log::warning, "ModuleDB", "Loaded module cache "
"seems to be empty");
}
}
foreach (mod, reloadmods)
{
cache.rmval (mod);
}