本文整理汇总了C++中DBClientConnection::runCommand方法的典型用法代码示例。如果您正苦于以下问题:C++ DBClientConnection::runCommand方法的具体用法?C++ DBClientConnection::runCommand怎么用?C++ DBClientConnection::runCommand使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DBClientConnection
的用法示例。
在下文中一共展示了DBClientConnection::runCommand方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: kill_wrapper
inline void kill_wrapper(pid_t pid, int sig, int port) {
#ifdef _WIN32
if (sig == SIGKILL || port == 0) {
assert( handles.count(pid) );
TerminateProcess(handles[pid], 1); // returns failure for "zombie" processes.
}
else {
DBClientConnection conn;
try {
conn.connect("127.0.0.1:" + BSONObjBuilder::numStr(port));
BSONObj info;
BSONObjBuilder b;
b.append( "shutdown", 1 );
b.append( "force", 1 );
conn.runCommand( "admin", b.done(), info );
}
catch (...) {
//Do nothing. This command never returns data to the client and the driver doesn't like that.
}
}
#else
int x = kill( pid, sig );
if ( x ) {
if ( errno == ESRCH ) {
}
else {
cout << "killFailed: " << errnoWithDescription() << endl;
assert( x == 0 );
}
}
#endif
}
示例2: shardCollection
/** Shard collection on key */
void mongoDeploy::shardCollection (string mongoSHostPort, string fullCollection, mongo::BSONObj shardKey) {
using namespace mongo;
BSONObj info;
DBClientConnection c;
c.connect (mongoSHostPort);
BSONObj cmd = BSON ("shardcollection" << fullCollection << "key" << shardKey);
cout << cmd << " -> " << endl;
c.runCommand ("admin", cmd, info);
cout << info << endl;
}
示例3: shardDatabase
/** Enable sharding on given database */
void mongoDeploy::shardDatabase (string mongoSHostPort, string database) {
using namespace mongo;
BSONObj info;
DBClientConnection c;
c.connect (mongoSHostPort);
BSONObj cmd = BSON ("enablesharding" << database);
cout << cmd << " -> " << endl;
c.runCommand ("admin", cmd, info);
cout << info << endl;
}
示例4: BSONObjBuilder
void
info(DBClientConnection &c)
{
BSONObj info, cmd;
cmd = BSONObjBuilder().append( "serverStatus", 1 ).obj();
c.runCommand(DBNAME, cmd, info);
cout << info << endl;
cmd = BSONObjBuilder().append("replSetGetStatus", 1).obj();
c.runCommand(DBNAME, cmd, info);
cout << info << endl;
cmd = BSONObjBuilder().append("listDatabases", 1).obj();
c.runCommand(DBNAME, cmd, info);
cout << info << endl;
// foreach db in dbases { runCommand(db, "dbstats") }
cmd = BSONObjBuilder().append("dbstats", 1).obj();
cout << info["databases"].size() << endl;
vector<BSONElement> dbases = info["databases"].Array();
cout << dbases.size() << " -- " << dbases.capacity() << endl;
for( vector<BSONElement>::iterator iter = dbases.begin();
iter != dbases.end();
++iter )
{
if( iter->ok() )
{
BSONObj dbinfo;
BSONElement &db = *iter;
string dbname;
if( !db["name"].ok() )
continue;
db["name"].Val(dbname);
cout << dbname << endl;
c.runCommand(dbname, cmd, dbinfo);
cout << dbinfo << endl;
}
}
}
示例5: kill_wrapper
inline void kill_wrapper( pid_t pid, int sig, int port, const BSONObj& opt ) {
#ifdef _WIN32
if (sig == SIGKILL || port == 0) {
verify( registry._handles.count(pid) );
TerminateProcess(registry._handles[pid], 1); // returns failure for "zombie" processes.
}
else {
DBClientConnection conn;
try {
conn.connect("127.0.0.1:" + BSONObjBuilder::numStr(port));
BSONElement authObj = opt["auth"];
if ( !authObj.eoo() ){
string errMsg;
conn.auth( "admin", authObj["user"].String(),
authObj["pwd"].String(), errMsg );
if ( !errMsg.empty() ) {
cout << "Failed to authenticate before shutdown: "
<< errMsg << endl;
}
}
BSONObj info;
BSONObjBuilder b;
b.append( "shutdown", 1 );
b.append( "force", 1 );
conn.runCommand( "admin", b.done(), info );
}
catch (...) {
//Do nothing. This command never returns data to the client and the driver doesn't like that.
}
}
#else
int x = kill( pid, sig );
if ( x ) {
if ( errno == ESRCH ) {
}
else {
log() << "killFailed: " << errnoWithDescription() << endl;
verify( x == 0 );
}
}
#endif
}
示例6: main
int main(int argc, char* argv[])
{
// Check the required number of command line arguments.
if (argc != 5)
{
cout << "usr host user pwd jobs_path" << endl;
return 0;
}
// Fetch command line arguments.
const auto host = argv[1];
const auto user = argv[2];
const auto pwd = argv[3];
const path jobs_path = argv[4];
// Connect to host and authenticate user.
DBClientConnection conn;
{
cout << local_time() << "Connecting to " << host << " and authenticating " << user << endl;
string errmsg;
if ((!conn.connect(host, errmsg)) || (!conn.auth("istar", user, pwd, errmsg)))
{
cerr << local_time() << errmsg << endl;
return 1;
}
}
// Initialize constants.
cout << local_time() << "Initializing" << endl;
const auto collection = "istar.usr";
const auto epoch = date(1970, 1, 1);
const size_t num_usrs = 2;
constexpr array<size_t, num_usrs> qn{{ 12, 60 }};
constexpr array<double, num_usrs> qv{{ 1.0 / qn[0], 1.0 / qn[1] }};
const size_t num_references = 4;
const size_t num_subsets = 5;
const array<string, num_subsets> SubsetSMARTS
{{
"[!#1]", // heavy
"[#6+0!$(*~[#7,#8,F]),SH0+0v2,s+0,S^3,Cl+0,Br+0,I+0]", // hydrophobic
"[a]", // aromatic
"[$([O,S;H1;v2]-[!$(*=[O,N,P,S])]),$([O,S;H0;v2]),$([O,S;-]),$([N&v3;H1,H2]-[!$(*=[O,N,P,S])]),$([N;v3;H0]),$([n,o,s;+0]),F]", // acceptor
"[N!H0v3,N!H0+v4,OH+0,SH+0,nH+0]", // donor
}};
// Initialize variables.
array<array<double, qn.back()>, 1> qw;
array<array<double, qn.back()>, 1> lw;
auto q = qw[0];
auto l = lw[0];
// Read ZINC ID file.
const string_array<size_t> zincids("16_zincid.txt");
const auto num_ligands = zincids.size();
// Read SMILES file.
const string_array<size_t> smileses("16_smiles.txt");
assert(smileses.size() == num_ligands);
// Read supplier file.
const string_array<size_t> suppliers("16_supplier.txt");
assert(suppliers.size() == num_ligands);
// Read property files of floating point types and integer types.
const auto zfproperties = read<array<float, 4>>("16_zfprop.f32");
assert(zfproperties.size() == num_ligands);
const auto ziproperties = read<array<int16_t, 5>>("16_ziprop.i16");
assert(ziproperties.size() == num_ligands);
// Open files for subsequent reading.
std::ifstream usrcat_bin("16_usrcat.f64");
stream_array<size_t> ligands("16_ligand.pdbqt");
assert(ligands.size() == num_ligands);
array<vector<double>, 2> scores
{{
vector<double>(num_ligands, 0),
vector<double>(num_ligands, 0)
}};
const auto& u0scores = scores[0];
const auto& u1scores = scores[1];
vector<size_t> scase(num_ligands);
// Enter event loop.
cout << local_time() << "Entering event loop" << endl;
bool sleeping = false;
while (true)
{
// Fetch an incompleted job in a first-come-first-served manner.
if (!sleeping) cout << local_time() << "Fetching an incompleted job" << endl;
BSONObj info;
conn.runCommand("istar", BSON("findandmodify" << "usr" << "query" << BSON("done" << BSON("$exists" << false) << "started" << BSON("$exists" << false)) << "sort" << BSON("submitted" << 1) << "update" << BSON("$set" << BSON("started" << Date_t(duration_cast<std::chrono::milliseconds>(system_clock::now().time_since_epoch()).count())))), info); // conn.findAndModify() is available since MongoDB C++ Driver legacy-1.0.0
const auto value = info["value"];
if (value.isNull())
{
// No incompleted jobs. Sleep for a while.
if (!sleeping) cout << local_time() << "Sleeping" << endl;
sleeping = true;
this_thread::sleep_for(chrono::seconds(10));
continue;
}
//.........这里部分代码省略.........
示例7: kill_wrapper
inline void kill_wrapper( ProcessId pid, int sig, int port, const BSONObj& opt ) {
#ifdef _WIN32
if (sig == SIGKILL || port == 0) {
verify( registry._handles.count(pid) );
TerminateProcess(registry._handles[pid], 1); // returns failure for "zombie" processes.
return;
}
std::string eventName = getShutdownSignalName(pid.asUInt32());
HANDLE event = OpenEventA(EVENT_MODIFY_STATE, FALSE, eventName.c_str());
if (event == NULL) {
int gle = GetLastError();
if (gle != ERROR_FILE_NOT_FOUND) {
warning() << "kill_wrapper OpenEvent failed: " << errnoWithDescription();
}
else {
log() << "kill_wrapper OpenEvent failed to open event to the process "
<< pid.asUInt32()
<< ". It has likely died already or server is running an older version."
<< " Attempting to shutdown through admin command.";
// Back-off to the old way of shutting down the server on Windows, in case we
// are managing a pre-2.6.0rc0 service, which did not have the event.
//
try {
DBClientConnection conn;
conn.connect("127.0.0.1:" + BSONObjBuilder::numStr(port));
BSONElement authObj = opt["auth"];
if (!authObj.eoo()){
string errMsg;
conn.auth("admin", authObj["user"].String(),
authObj["pwd"].String(), errMsg);
if (!errMsg.empty()) {
cout << "Failed to authenticate before shutdown: "
<< errMsg << endl;
}
}
BSONObj info;
BSONObjBuilder b;
b.append("shutdown", 1);
b.append("force", 1);
conn.runCommand("admin", b.done(), info);
}
catch (...) {
// Do nothing. This command never returns data to the client and the driver
// doesn't like that.
//
}
}
return;
}
ON_BLOCK_EXIT(CloseHandle, event);
bool result = SetEvent(event);
if (!result) {
error() << "kill_wrapper SetEvent failed: " << errnoWithDescription();
return;
}
#else
int x = kill( pid.toNative(), sig );
if ( x ) {
if ( errno == ESRCH ) {
}
else {
log() << "killFailed: " << errnoWithDescription() << endl;
verify( x == 0 );
}
}
#endif
}
示例8: main
//.........这里部分代码省略.........
// Initialize vectors to store compounds' primary score and their corresponding conformer.
vector<double> scores(num_ligands); // Primary score of molecules.
vector<size_t> cnfids(num_ligands); // ID of conformer with the best primary score.
const auto compare = [&](const size_t val0, const size_t val1) // Sort by the primary score.
{
return scores[val0] < scores[val1];
};
// Initialize an io service pool and create worker threads for later use.
const size_t num_threads = thread::hardware_concurrency();
cout << local_time() << "Creating an io service pool of " << num_threads << " worker threads" << endl;
io_service_pool io(num_threads);
safe_counter<size_t> cnt;
// Initialize the number of chunks and the number of molecules per chunk.
const auto num_chunks = num_threads << 4;
const auto chunk_size = 1 + (num_ligands - 1) / num_chunks;
assert(chunk_size * num_chunks >= num_ligands);
assert(chunk_size >= num_hits);
cout << local_time() << "Using " << num_chunks << " chunks and a chunk size of " << chunk_size << endl;
vector<size_t> scase(num_ligands);
vector<size_t> zcase(num_hits * (num_chunks - 1) + min(num_hits, num_ligands - chunk_size * (num_chunks - 1))); // The last chunk might have fewer than num_hits records.
// Enter event loop.
cout << local_time() << "Entering event loop" << endl;
cout.setf(ios::fixed, ios::floatfield);
bool sleeping = false;
while (true)
{
// Fetch an incompleted job in a first-come-first-served manner.
if (!sleeping) cout << local_time() << "Fetching an incompleted job" << endl;
BSONObj info;
const auto started = milliseconds_since_epoch();
conn.runCommand("istar", BSON("findandmodify" << "usr2" << "query" << BSON("started" << BSON("$exists" << false)) << "sort" << BSON("submitted" << 1) << "update" << BSON("$set" << BSON("started" << started))), info); // conn.findAndModify() is available since MongoDB C++ Driver legacy-1.0.0
const auto value = info["value"];
if (value.isNull())
{
// No incompleted jobs. Sleep for a while.
if (!sleeping) cout << local_time() << "Sleeping" << endl;
sleeping = true;
this_thread::sleep_for(chrono::seconds(2));
continue;
}
sleeping = false;
const auto job = value.Obj();
// Obtain job properties.
const auto _id = job["_id"].OID();
cout << local_time() << "Executing job " << _id.str() << endl;
const auto job_path = jobs_path / _id.str();
const size_t usr0 = job["usr"].Int(); // Specify the primary sorting score. 0: USR; 1: USRCAT.
assert(usr0 == 0 || usr0 == 1);
const auto usr1 = usr0 ^ 1;
const auto qnu0 = qn[usr0];
const auto qnu1 = qn[usr1];
// Read and validate the user-supplied SDF file.
cout << local_time() << "Reading and validating the query file" << endl;
SDMolSupplier sup((job_path / "query.sdf").string(), true, false, true); // sanitize, removeHs, strictParsing
if (!sup.length() || !sup.atEnd())
{
const auto error = 1;
cout << local_time() << "Failed to parse the query file, error code = " << error << endl;
conn.update(collection, BSON("_id" << _id), BSON("$set" << BSON("completed" << milliseconds_since_epoch() << "error" << error)));
continue;
}