if (!zstr(ns) && !zstr(json_query) && !zstr(json_fields)) {
+ DBClientConnection *conn = NULL;
+
try {
BSONObj query = fromjson(json_query);
BSONObj fields = fromjson(json_fields);
- DBClientConnection *conn = mongo_connection_pool_get(globals.conn_pool);
- BSONObj res = conn->findOne(ns, Query(query), &fields);
- mongo_connection_pool_put(globals.conn_pool, conn);
-
- stream->write_function(stream, "-OK\n%s\n", res.toString().c_str());
- } catch (MsgAssertionException &e) {
- stream->write_function(stream, "-ERR\n%s\n", e.what());
+ conn = mongo_connection_pool_get(globals.conn_pool);
+ if (conn) {
+ BSONObj res = conn->findOne(ns, Query(query), &fields);
+ mongo_connection_pool_put(globals.conn_pool, conn);
+
+ stream->write_function(stream, "-OK\n%s\n", res.toString().c_str());
+ } else {
+ stream->write_function(stream, "-ERR\nNo connection\n");
+ }
+ } catch (DBException &e) {
+ if (conn) {
+ mongo_connection_destroy(&conn);
+ }
+ stream->write_function(stream, "-ERR\n%s\n", e.toString().c_str());
}
} mongo_connection_pool_t;
+switch_status_t mongo_connection_create(DBClientConnection **connection, const char *host);
+void mongo_connection_destroy(DBClientConnection **conn);
+
switch_status_t mongo_connection_pool_create(mongo_connection_pool_t **conn_pool, switch_size_t min_connections, switch_size_t max_connections,
const char *host);
void mongo_connection_pool_destroy(mongo_connection_pool_t **conn_pool);