Make it work again

This commit is contained in:
fbraem
2013-02-13 19:10:57 +01:00
parent 913020e89d
commit 9765ccf587
27 changed files with 531 additions and 195 deletions

View File

@@ -78,24 +78,21 @@ Connection::Ptr ReplicaSet::isMaster(const Net::SocketAddress& address)
QueryRequest request("admin.$cmd");
request.numberToReturn(1);
request.query().insert("isMaster", 1);
request.query().add("isMaster", 1);
ResponseMessage response;
conn->sendRequest(request, response);
if ( response.documents().size() > 0 )
{
DocumentPtr doc = response.documents()[0];
Dynamic::Var isMasterVar = (*doc)["ismaster"];
if ( !isMasterVar.isEmpty() && isMasterVar )
Document::Ptr doc = response.documents()[0];
if ( doc->get<bool>("ismaster") )
{
return conn;
}
else if ( doc->contains("primary") )
else if ( doc->exists("primary") )
{
Dynamic::Var& primary = (*doc)["primary"];
Net::SocketAddress primaryAddress(primary.convert<std::string>());
return isMaster(primaryAddress);
return isMaster(Net::SocketAddress(doc->get<std::string>("primary")));
}
}
}