Как повторно подключиться к MongoDB с помощью драйвера C ++? - PullRequest
0 голосов
/ 10 января 2012

У меня есть функция C ++, которая сохраняет документ в MongoDB с помощью драйвера C ++. В качестве аргумента принимает ссылку на соединение:

http://pastebin.com/jwRDhNWQ

Когда я перезагружаю MongoDB, я вижу, что устанавливается новое соединение. Однако conn.isFailed () остается верным.

Это может происходить из-за того, что при повторном подключении я использую conn, а не &conn Когда я использую &conn, как в &conn.connect("localhost");, я получаю сообщение об ошибке-

error: lvalue required as unary ‘&’ operand

Как мне это исправить? т.е. изменить базовое соединение так, чтобы conn.isFailed () становилось ложным, когда было установлено новое соединение?

1 Ответ

1 голос
/ 11 января 2012

Вы должны включить _autoReconnect в конструкторе mongo :: DBClientConnection :: DBClientConnection.
http://api.mongodb.org/cplusplus/current/classmongo_1_1_d_b_client_connection.html#a6a1a348024dd302572504b7bfb6e74a2

Переменная _failed, возвращаемая методом isfailed (), не устанавливается до вызова _check Connection. _checkConnection не вызывается, пока что-то не отправлено в базу данных, поэтому в качестве альтернативы вы можете вызвать команду ping перед вызовом _isFailed. Тем не менее, рекомендуется исправить _autoReconnect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...