int main() { mongo conn[1]; bson b; int res; if( mongo_client( conn, TEST_SERVER, 27017 ) != MONGO_OK ) { printf("Failed to connect"); exit(1); } res = mongo_simple_str_command( conn, "test", "$eval", "for(i=0; i<100000; i++) { db.foo.find() }", &b ); ASSERT( res == MONGO_OK ); /* 50ms timeout */ mongo_set_op_timeout( conn, 50 ); ASSERT( conn->err == 0 ); res = mongo_simple_str_command( conn, "test", "$eval", "for(i=0; i<100000; i++) { db.foo.find() }", &b ); ASSERT( res == MONGO_ERROR ); ASSERT( conn->err == MONGO_IO_ERROR ); return 0; }
SEXP mongo_simple_command(SEXP mongo_conn, SEXP db, SEXP cmdstr, SEXP arg) { mongo* conn = _checkMongo(mongo_conn); const char* _db = CHAR(STRING_ELT(db, 0)); const char* _cmdstr = CHAR(STRING_ELT(cmdstr, 0)); bson out; int success; if (TYPEOF(arg) == STRSXP) success = (mongo_simple_str_command(conn, _db, _cmdstr, CHAR(STRING_ELT(arg, 0)), &out) == MONGO_OK); else success = (mongo_simple_int_command(conn, _db, _cmdstr, asInteger(arg), &out) == MONGO_OK); if (!success) { return R_NilValue; } SEXP ret = _mongo_bson_create(&out); bson_destroy(&out); UNPROTECT(3); return ret; }
MONGO_EXPORT int mongo_cmd_drop_collection( mongo *conn, const char *db, const char *collection, bson *out ) { return mongo_simple_str_command( conn, db, "drop", collection, out ); }