本文整理汇总了C++中SharedDatabase类的典型用法代码示例。如果您正苦于以下问题:C++ SharedDatabase类的具体用法?C++ SharedDatabase怎么用?C++ SharedDatabase使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SharedDatabase类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char **argv) {
RegisterExecutablePlatform(ExePlatformClientExport);
set_exception_handler();
LogFile->write(EQEMuLog::Status, "Client Files Export Utility");
if(!EQEmuConfig::LoadConfig()) {
LogFile->write(EQEMuLog::Error, "Unable to load configuration file.");
return 1;
}
const EQEmuConfig *config = EQEmuConfig::get();
if(!load_log_settings(config->LogSettingsFile.c_str())) {
LogFile->write(EQEMuLog::Error, "Warning: unable to read %s.", config->LogSettingsFile.c_str());
}
SharedDatabase database;
LogFile->write(EQEMuLog::Status, "Connecting to database...");
if(!database.Connect(config->DatabaseHost.c_str(), config->DatabaseUsername.c_str(),
config->DatabasePassword.c_str(), config->DatabaseDB.c_str(), config->DatabasePort)) {
LogFile->write(EQEMuLog::Error, "Unable to connect to the database, cannot continue without a "
"database connection");
return 1;
}
ExportSpells(&database);
ExportSkillCaps(&database);
ExportBaseData(&database);
return 0;
}
示例2: main
int main(int argc, char **argv) {
RegisterExecutablePlatform(ExePlatformClientExport);
Log.LoadLogSettingsDefaults();
set_exception_handler();
Log.Out(Logs::General, Logs::Status, "Client Files Export Utility");
if(!EQEmuConfig::LoadConfig()) {
Log.Out(Logs::General, Logs::Error, "Unable to load configuration file.");
return 1;
}
const EQEmuConfig *config = EQEmuConfig::get();
SharedDatabase database;
Log.Out(Logs::General, Logs::Status, "Connecting to database...");
if(!database.Connect(config->DatabaseHost.c_str(), config->DatabaseUsername.c_str(),
config->DatabasePassword.c_str(), config->DatabaseDB.c_str(), config->DatabasePort)) {
Log.Out(Logs::General, Logs::Error, "Unable to connect to the database, cannot continue without a "
"database connection");
return 1;
}
/* Register Log System and Settings */
database.LoadLogSettings(Log.log_settings);
Log.StartFileLogs();
ExportSpells(&database);
ExportSkillCaps(&database);
ExportBaseData(&database);
Log.CloseFileLogs();
return 0;
}
示例3: getTxnHandle
void CmdInterpreter::visit(ProxyCmdGetTxnCsn &cmd)
{
TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
SharedDatabase pDb = pTxnHandle->pDb;
assert(pDb->areSnapshotsEnabled());
SnapshotRandomAllocationSegment *pSegment =
SegmentFactory::dynamicCast<SnapshotRandomAllocationSegment *>(
pTxnHandle->pSnapshotSegment);
setCsnHandle(cmd.getResultHandle(), pSegment->getSnapshotCsn());
}
示例4: getDbHandle
void CmdInterpreter::visit(ProxyCmdCompleteBackup &cmd)
{
DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
SharedDatabase pDb = pDbHandle->pDb;
uint64_t paramVal = cmd.getLowerBoundCsn();
TxnId lowerBoundCsn = isMAXU(paramVal) ? NULL_TXN_ID : TxnId(paramVal);
volatile bool abortFlag = false;
pDb->completeBackup(
lowerBoundCsn,
TxnId(cmd.getUpperBoundCsn()),
(pExecHandle == NULL) ? abortFlag : pExecHandle->aborted);
}
示例5: Java_net_sf_farrago_fennel_FennelStorage_tupleStreamGraphOpen
extern "C" JNIEXPORT void JNICALL
Java_net_sf_farrago_fennel_FennelStorage_tupleStreamGraphOpen(
JNIEnv *pEnvInit, jclass, jlong hStreamGraph, jlong hTxn,
jobject hJavaStreamMap, jobject hJavaErrorTarget)
{
JniEnvRef pEnv(pEnvInit);
try {
CmdInterpreter::StreamGraphHandle &streamGraphHandle =
CmdInterpreter::getStreamGraphHandleFromLong(hStreamGraph);
CmdInterpreter::TxnHandle &txnHandle =
CmdInterpreter::getTxnHandleFromLong(hTxn);
// Provide runtime context for stream open(), which a scheduler may
// defer until after our java caller returns: hence the global ref.
if (streamGraphHandle.javaRuntimeContext) {
// TODO jvs 13-May-2010: Use a shared pointer for this
// like we do with ErrorTarget, and track its JNI handle.
pEnv->DeleteGlobalRef(streamGraphHandle.javaRuntimeContext);
streamGraphHandle.javaRuntimeContext = NULL;
}
streamGraphHandle.javaRuntimeContext =
pEnv->NewGlobalRef(hJavaStreamMap);
streamGraphHandle.pExecStreamGraph->setTxn(txnHandle.pTxn);
// When snapshots are enabled, switch the delegating segment so
// the stream graph accesses the snapshot segment associated with
// the current txn
SharedDatabase pDb = txnHandle.pDb;
if (pDb->areSnapshotsEnabled()) {
DynamicDelegatingSegment *pSegment =
SegmentFactory::dynamicCast<DynamicDelegatingSegment *>(
streamGraphHandle.pSegment);
pSegment->setDelegatingSegment(
WeakSegment(txnHandle.pSnapshotSegment));
pSegment =
SegmentFactory::dynamicCast<DynamicDelegatingSegment *>(
streamGraphHandle.pReadCommittedSegment);
pSegment->setDelegatingSegment(
WeakSegment(txnHandle.pReadCommittedSnapshotSegment));
}
streamGraphHandle.pExecStreamGraph->setErrorTarget(
CmdInterpreter::newErrorTarget(hJavaErrorTarget));
txnHandle.pResourceGovernor->requestResources(
*(streamGraphHandle.pExecStreamGraph));
streamGraphHandle.pExecStreamGraph->open();
if (streamGraphHandle.pScheduler.unique()) {
streamGraphHandle.pScheduler->start();
}
} catch (std::exception &ex) {
pEnv.handleExcn(ex);
}
}
示例6: mallinfo
void CmdInterpreter::visit(ProxyCmdCreateExecutionStreamGraph &cmd)
{
#if 0
struct mallinfo minfo = mallinfo();
std::cout << "Number of allocated bytes before stream graph construction = "
<< minfo.uordblks << " bytes" << std::endl;
#endif
TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
SharedDatabase pDb = pTxnHandle->pDb;
SharedExecStreamGraph pGraph =
ExecStreamGraph::newExecStreamGraph();
pGraph->setTxn(pTxnHandle->pTxn);
pGraph->setResourceGovernor(pTxnHandle->pResourceGovernor);
std::auto_ptr<StreamGraphHandle> pStreamGraphHandle(
new StreamGraphHandle());
JniUtil::incrementHandleCount(
STREAMGRAPHHANDLE_TRACE_TYPE_STR, pStreamGraphHandle.get());
pStreamGraphHandle->javaRuntimeContext = NULL;
pStreamGraphHandle->pTxnHandle = pTxnHandle;
pStreamGraphHandle->pExecStreamGraph = pGraph;
pStreamGraphHandle->pExecStreamFactory.reset(
new ExecStreamFactory(
pDb,
pTxnHandle->pFtrsTableWriterFactory,
pStreamGraphHandle.get()));
// When snapshots are enabled, allocate DynamicDelegatingSegments for the
// stream graph so if the stream graph is executed in different txns,
// we can reset the delegate to whatever is the snapshot segment associated
// with the current txn.
if (pDb->areSnapshotsEnabled()) {
pStreamGraphHandle->pSegment =
pDb->getSegmentFactory()->newDynamicDelegatingSegment(
pTxnHandle->pSnapshotSegment);
pStreamGraphHandle->pReadCommittedSegment =
pDb->getSegmentFactory()->newDynamicDelegatingSegment(
pTxnHandle->pReadCommittedSnapshotSegment);
}
setStreamGraphHandle(
cmd.getResultHandle(),
pStreamGraphHandle.release());
}
示例7: main
int main(int argc, char **argv) {
RegisterExecutablePlatform(ExePlatformSharedMemory);
Log.LoadLogSettingsDefaults();
set_exception_handler();
Log.Out(Logs::General, Logs::Status, "Shared Memory Loader Program");
if(!EQEmuConfig::LoadConfig()) {
Log.Out(Logs::General, Logs::Error, "Unable to load configuration file.");
return 1;
}
auto Config = EQEmuConfig::get();
SharedDatabase database;
Log.Out(Logs::General, Logs::Status, "Connecting to database...");
if(!database.Connect(Config->DatabaseHost.c_str(), Config->DatabaseUsername.c_str(),
Config->DatabasePassword.c_str(), Config->DatabaseDB.c_str(), Config->DatabasePort)) {
Log.Out(Logs::General, Logs::Error, "Unable to connect to the database, cannot continue without a "
"database connection");
return 1;
}
/* Register Log System and Settings */
database.LoadLogSettings(Log.log_settings);
Log.StartFileLogs();
database.LoadVariables();
/* If we're running shared memory and hotfix has no custom name, we probably want to start from scratch... */
std::string db_hotfix_name;
if (database.GetVariable("hotfix_name", db_hotfix_name)) {
if (!db_hotfix_name.empty() && strcasecmp("hotfix_", db_hotfix_name.c_str()) == 0) {
Log.Out(Logs::General, Logs::Status, "Current hotfix in variables is the default %s, clearing out variable", db_hotfix_name.c_str());
std::string query = StringFormat("UPDATE `variables` SET `value`='' WHERE (`varname`='hotfix_name')");
database.QueryDatabase(query);
}
}
std::string hotfix_name = "";
bool load_all = true;
bool load_items = false;
bool load_factions = false;
bool load_loot = false;
bool load_skill_caps = false;
bool load_spells = false;
bool load_bd = false;
if(argc > 1) {
for(int i = 1; i < argc; ++i) {
switch(argv[i][0]) {
case 'b':
if(strcasecmp("base_data", argv[i]) == 0) {
load_bd = true;
load_all = false;
}
break;
case 'i':
if(strcasecmp("items", argv[i]) == 0) {
load_items = true;
load_all = false;
}
break;
case 'f':
if(strcasecmp("factions", argv[i]) == 0) {
load_factions = true;
load_all = false;
}
break;
case 'l':
if(strcasecmp("loot", argv[i]) == 0) {
load_loot = true;
load_all = false;
}
break;
case 's':
if(strcasecmp("skill_caps", argv[i]) == 0) {
load_skill_caps = true;
load_all = false;
} else if(strcasecmp("spells", argv[i]) == 0) {
load_spells = true;
load_all = false;
}
break;
case '-': {
auto split = SplitString(argv[i], '=');
if(split.size() >= 2) {
auto command = split[0];
auto argument = split[1];
if(strcasecmp("-hotfix", command.c_str()) == 0) {
hotfix_name = argument;
load_all = true;
}
}
break;
}
}
}
//.........这里部分代码省略.........
示例8: main
int main(int argc, char **argv) {
RegisterExecutablePlatform(ExePlatformSharedMemory);
Log.LoadLogSettingsDefaults();
set_exception_handler();
Log.Out(Logs::General, Logs::Status, "Shared Memory Loader Program");
if(!EQEmuConfig::LoadConfig()) {
Log.Out(Logs::General, Logs::Error, "Unable to load configuration file.");
return 1;
}
const EQEmuConfig *config = EQEmuConfig::get();
SharedDatabase database;
Log.Out(Logs::General, Logs::Status, "Connecting to database...");
if(!database.Connect(config->DatabaseHost.c_str(), config->DatabaseUsername.c_str(),
config->DatabasePassword.c_str(), config->DatabaseDB.c_str(), config->DatabasePort)) {
Log.Out(Logs::General, Logs::Error, "Unable to connect to the database, cannot continue without a "
"database connection");
return 1;
}
/* Register Log System and Settings */
database.LoadLogSettings(Log.log_settings);
Log.StartFileLogs();
bool load_all = true;
bool load_items = false;
bool load_factions = false;
bool load_loot = false;
bool load_skill_caps = false;
bool load_spells = false;
bool load_bd = false;
if(argc > 1) {
load_all = false;
for(int i = 1; i < argc; ++i) {
switch(argv[i][0]) {
case 'a':
if(strcasecmp("all", argv[i]) == 0) {
load_all = true;
}
break;
case 'b':
if(strcasecmp("base_data", argv[i]) == 0) {
load_bd = true;
}
break;
case 'i':
if(strcasecmp("items", argv[i]) == 0) {
load_items = true;
}
break;
case 'f':
if(strcasecmp("factions", argv[i]) == 0) {
load_factions = true;
}
break;
case 'l':
if(strcasecmp("loot", argv[i]) == 0) {
load_loot = true;
}
break;
case 's':
if(strcasecmp("skill_caps", argv[i]) == 0) {
load_skill_caps = true;
} else if(strcasecmp("spells", argv[i]) == 0) {
load_spells = true;
}
break;
}
}
}
if(load_all || load_items) {
Log.Out(Logs::General, Logs::Status, "Loading items...");
try {
LoadItems(&database);
} catch(std::exception &ex) {
Log.Out(Logs::General, Logs::Error, "%s", ex.what());
return 1;
}
}
if(load_all || load_factions) {
Log.Out(Logs::General, Logs::Status, "Loading factions...");
try {
LoadFactions(&database);
} catch(std::exception &ex) {
Log.Out(Logs::General, Logs::Error, "%s", ex.what());
return 1;
}
}
if(load_all || load_loot) {
//.........这里部分代码省略.........
示例9: main
int main(int argc, char **argv) {
RegisterExecutablePlatform(ExePlatformSharedMemory);
set_exception_handler();
LogFile->write(EQEMuLog::Status, "Shared Memory Loader Program");
if(!EQEmuConfig::LoadConfig()) {
LogFile->write(EQEMuLog::Error, "Unable to load configuration file.");
return 0;
}
const EQEmuConfig *config = EQEmuConfig::get();
if(!load_log_settings(config->LogSettingsFile.c_str())) {
LogFile->write(EQEMuLog::Error, "Warning: unable to read %s.", config->LogSettingsFile.c_str());
}
SharedDatabase database;
LogFile->write(EQEMuLog::Status, "Connecting to database...");
if(!database.Connect(config->DatabaseHost.c_str(), config->DatabaseUsername.c_str(),
config->DatabasePassword.c_str(), config->DatabaseDB.c_str(), config->DatabasePort)) {
LogFile->write(EQEMuLog::Error, "Unable to connect to the database, cannot continue without a "
"database connection");
return 0;
}
bool load_all = true;
bool load_items = true;
bool load_factions = true;
bool load_loot = true;
bool load_skill_caps = true;
bool load_spells = true;
if(argc > 1) {
load_all = false;
load_items = false;
load_factions = false;
load_loot = false;
load_skill_caps = false;
load_spells = false;
for(int i = 1; i < argc; ++i) {
switch(argv[i][0]) {
case 'a':
if(strcasecmp("all", argv[i]) == 0) {
load_all = true;
}
break;
case 'i':
if(strcasecmp("items", argv[i]) == 0) {
load_items = true;
}
break;
case 'f':
if(strcasecmp("factions", argv[i]) == 0) {
load_factions = true;
}
break;
case 'l':
if(strcasecmp("loot", argv[i]) == 0) {
load_loot = true;
}
break;
case 's':
if(strcasecmp("skill_caps", argv[i]) == 0) {
load_skill_caps = true;
} else if(strcasecmp("spells", argv[i]) == 0) {
load_spells = true;
}
break;
}
}
}
if(load_all || load_items) {
LogFile->write(EQEMuLog::Status, "Loading items...");
try {
LoadItems(&database);
} catch(std::exception &ex) {
LogFile->write(EQEMuLog::Error, "%s", ex.what());
return 0;
}
}
if(load_all || load_factions) {
LogFile->write(EQEMuLog::Status, "Loading factions...");
try {
LoadFactions(&database);
} catch(std::exception &ex) {
LogFile->write(EQEMuLog::Error, "%s", ex.what());
return 0;
}
}
if(load_all || load_loot) {
LogFile->write(EQEMuLog::Status, "Loading loot...");
try {
LoadLoot(&database);
} catch(std::exception &ex) {
//.........这里部分代码省略.........
示例10: pDbHandle
void CmdInterpreter::visit(ProxyCmdOpenDatabase &cmd)
{
ConfigMap configMap;
SharedProxyDatabaseParam pParam = cmd.getParams();
for (; pParam; ++pParam) {
configMap.setStringParam(pParam->getName(), pParam->getValue());
}
CacheParams cacheParams;
cacheParams.readConfig(configMap);
SharedCache pCache = Cache::newCache(cacheParams);
JniUtilParams jniUtilParams;
jniUtilParams.readConfig(configMap);
JniUtil::configure(jniUtilParams);
DeviceMode openMode = cmd.isCreateDatabase()
? DeviceMode::createNew
: DeviceMode::load;
std::auto_ptr<DbHandle> pDbHandle(newDbHandle());
JniUtil::incrementHandleCount(DBHANDLE_TRACE_TYPE_STR, pDbHandle.get());
JavaTraceTarget *pJavaTraceTarget = newTraceTarget();
pDbHandle->pTraceTarget.reset(pJavaTraceTarget);
// on a fatal error, echo the backtrace to the log file:
AutoBacktrace::setTraceTarget(pDbHandle->pTraceTarget);
SharedDatabase pDb;
try {
pDb = Database::newDatabase(
pCache,
configMap,
openMode,
pDbHandle->pTraceTarget,
SharedPseudoUuidGenerator(new JniPseudoUuidGenerator()));
} catch (...) {
AutoBacktrace::setTraceTarget();
throw;
}
pDbHandle->pDb = pDb;
ExecStreamResourceKnobs knobSettings;
knobSettings.cacheReservePercentage =
configMap.getIntParam("cacheReservePercentage");
knobSettings.expectedConcurrentStatements =
configMap.getIntParam("expectedConcurrentStatements");
ExecStreamResourceQuantity resourcesAvailable;
resourcesAvailable.nCachePages = pCache->getMaxLockedPages();
pDbHandle->pResourceGovernor =
SharedExecStreamGovernor(
new SimpleExecStreamGovernor(
knobSettings, resourcesAvailable,
pDbHandle->pTraceTarget,
"xo.resourceGovernor"));
if (pDb->isRecoveryRequired()) {
SegmentAccessor scratchAccessor =
pDb->getSegmentFactory()->newScratchSegment(pDb->getCache());
FtrsTableWriterFactory recoveryFactory(
pDb,
pDb->getCache(),
pDb->getTypeFactory(),
scratchAccessor);
pDb->recover(recoveryFactory);
cmd.setResultRecoveryRequired(true);
} else {
cmd.setResultRecoveryRequired(false);
}
pDbHandle->statsTimer.setTarget(*pJavaTraceTarget);
pDbHandle->statsTimer.addSource(pDb);
pDbHandle->statsTimer.addSource(pDbHandle->pResourceGovernor);
pDbHandle->statsTimer.start();
// Cache initialization may have been unable to allocate the requested
// number of pages -- check for this case and report it in the log.
if (pCache->getMaxAllocatedPageCount() != cacheParams.nMemPagesMax
|| pCache->getAllocatedPageCount() != cacheParams.nMemPagesInit)
{
FENNEL_DELEGATE_TRACE(
TRACE_WARNING,
pDb,
"Unable to allocate "
<< cacheParams.nMemPagesInit
<< " (of "
<< cacheParams.nMemPagesMax
<< " max) cache pages; allocated "
<< pCache->getAllocatedPageCount()
<< " cache pages.");
}
setDbHandle(cmd.getResultHandle(), pDbHandle.release());
}
示例11: assert
void CmdInterpreter::beginTxn(ProxyBeginTxnCmd &cmd, bool readOnly, TxnId csn)
{
assert(readOnly || csn == NULL_TXN_ID);
// block checkpoints during this method
DbHandle *pDbHandle = getDbHandle(cmd.getDbHandle());
SharedDatabase pDb = pDbHandle->pDb;
SXMutexSharedGuard actionMutexGuard(
pDb->getCheckpointThread()->getActionMutex());
std::auto_ptr<TxnHandle> pTxnHandle(newTxnHandle());
JniUtil::incrementHandleCount(TXNHANDLE_TRACE_TYPE_STR, pTxnHandle.get());
pTxnHandle->pDb = pDb;
pTxnHandle->readOnly = readOnly;
// TODO: CacheAccessor factory
pTxnHandle->pTxn = pDb->getTxnLog()->newLogicalTxn(pDb->getCache());
pTxnHandle->pResourceGovernor = pDbHandle->pResourceGovernor;
// NOTE: use a null scratchAccessor; individual ExecStreamGraphs
// will have their own
SegmentAccessor scratchAccessor;
pTxnHandle->pFtrsTableWriterFactory = SharedFtrsTableWriterFactory(
new FtrsTableWriterFactory(
pDb,
pDb->getCache(),
pDb->getTypeFactory(),
scratchAccessor));
// If snapshots are enabled, set up 2 snapshot segments -- one of which
// only reads committed data. This will be used for streams that need to
// read a snapshot of the data before other portions of the stream graph
// have modified the segment.
if (pDb->areSnapshotsEnabled()) {
if (csn == NULL_TXN_ID) {
csn = pTxnHandle->pTxn->getTxnId();
}
pTxnHandle->pSnapshotSegment =
pDb->getSegmentFactory()->newSnapshotRandomAllocationSegment(
pDb->getDataSegment(),
pDb->getDataSegment(),
csn,
false);
pTxnHandle->pReadCommittedSnapshotSegment =
pDb->getSegmentFactory()->newSnapshotRandomAllocationSegment(
pDb->getDataSegment(),
pDb->getDataSegment(),
csn,
true);
} else {
assert(csn == NULL_TXN_ID);
}
setTxnHandle(cmd.getResultHandle(), pTxnHandle.release());
}