MongodbObject * GameCore::CreateTestDataObject(const String &testTimeString, const String &runTime, TestData *testData) { MongodbObject *logObject = new MongodbObject(); if(logObject) { logObject->SetObjectName(testTimeString); logObject->AddString(String("Owner"), TEST_OWNER); logObject->AddString(String("RunTime"), runTime); logObject->AddInt32(String("DeviceFamily"), (int32)Core::Instance()->GetDeviceFamily()); logObject->AddInt64(String("TotalTime"), testData->totalTime); logObject->AddInt64(String("MinTime"), testData->minTime); logObject->AddInt64(String("MaxTime"), testData->maxTime); logObject->AddInt32(String("MaxTimeIndex"), testData->maxTimeIndex); logObject->AddInt64(String("StartTime"), testData->startTime); logObject->AddInt64(String("EndTime"), testData->endTime); logObject->AddInt32(String("RunCount"), testData->runCount); if(testData->runCount) { logObject->AddDouble(String("Average"), (double)testData->totalTime / (double)testData->runCount); } else { logObject->AddDouble(String("Average"), (double)0.0f); } logObject->Finish(); } return logObject; }
bool GameCore::ConnectToDB() { if(dbClient) return true; dbClient = MongodbClient::Create(DATABASE_IP, DATAPASE_PORT); if(dbClient) { dbClient->SetDatabaseName(DATABASE_NAME); dbClient->SetCollectionName(DATABASE_COLLECTION); MongodbObject *globalIdObject = dbClient->FindObjectByKey("GlobalTestId"); if(globalIdObject) currentRunId = globalIdObject->GetInt32("LastTestId") + 1; MongodbObject * newGlobalIdObject = new MongodbObject(); newGlobalIdObject->SetObjectName("GlobalTestId"); newGlobalIdObject->AddInt32("LastTestId", currentRunId); newGlobalIdObject->Finish(); dbClient->SaveObject(newGlobalIdObject, globalIdObject); SafeRelease(newGlobalIdObject); SafeRelease(globalIdObject); } else { Logger::Debug("Can't connect to DB"); } return (dbClient != NULL); }
bool MongodbClient::SaveBinary(const String &key, uint8 *data, int32 dataSize) { int32 status = MONGO_ERROR; if(IsConnected()) { MongodbObject * binary = new MongodbObject(); DVASSERT(binary); binary->SetObjectName(key); binary->AddInt32(String("DataSize").c_str(), dataSize); binary->AddData(String("Data").c_str(), data, dataSize); binary->Finish(); MongodbObject *foundObject = FindObjectByKey(key); if(foundObject) { status = mongo_update(clientData->connection, namespaceName.c_str(), (bson *)foundObject->InternalObject(), (bson *)binary->InternalObject(), 0, NULL); if(MONGO_OK != status) { LogError(String("SaveBinary, update"), clientData->connection->err); } SafeRelease(foundObject); } else { status = mongo_insert(clientData->connection, namespaceName.c_str(), (bson *)binary->InternalObject(), NULL); if(MONGO_OK != status) { LogError(String("SaveBinary, insert"), clientData->connection->err); } } SafeRelease(binary); } return (MONGO_OK == status); }