dbproxy::dbproxy(boost::shared_ptr<config::config> _config) { mongoc_init(); mongoc_uri_t * _uri = mongoc_uri_new_for_host_port(_config->get_value_string("ip").c_str(), _config->get_value_int("port")); _client = mongoc_client_new(mongoc_uri_get_string(_uri)); mongoc_uri_destroy(_uri); _db = mongoc_client_get_database(_client, _config->get_value_string("db").c_str()); }
static void test_mongoc_uri_new_for_host_port (void) { mongoc_uri_t *uri; uri = mongoc_uri_new_for_host_port("uber", 555); ASSERT(uri); ASSERT(!strcmp("uber", mongoc_uri_get_hosts(uri)->host)); ASSERT(!strcmp("uber:555", mongoc_uri_get_hosts(uri)->host_and_port)); ASSERT(555 == mongoc_uri_get_hosts(uri)->port); mongoc_uri_destroy(uri); }
// Return a new mongoc_uri_t which should be freed with mongoc_uri_destroy mongoc_uri_t *be_mongo_new_uri_from_options() { const char *uristr = p_stab("mongo_uri"); const char *host = p_stab("mongo_host"); const char *port = p_stab("mongo_port"); const char *user = p_stab("mongo_user"); const char *password = p_stab("mongo_password"); const char *authSource = p_stab("mongo_authSource"); mongoc_uri_t *uri; if (uristr) { // URI string trumps everything else. Let the driver parse it. uri = mongoc_uri_new(uristr); } else if (host || port || user || password || authSource) { // Using legacy piecemeal connection options. Assemble the URI. uri = mongoc_uri_new_for_host_port( host ? host : "localhost", (port && atoi(port)) ? atoi(port) : 27017 ); // NB: Option setters require mongo-c-driver >= 1.4.0 (Aug 2016) if (user != NULL) { mongoc_uri_set_username(uri, user); if (password != NULL) { mongoc_uri_set_password(uri, password); } } if (authSource != NULL) { mongoc_uri_set_auth_source(uri, authSource); } } else { // No connection options given at all, use defaults. uri = mongoc_uri_new_for_host_port("localhost", 27017); } return uri; }