MongoDB  2.6.0
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
mongo::DBClientReplicaSet Class Reference

Use this class to connect to a replica set of servers. More...

#include <dbclient_rs.h>

Inheritance diagram for mongo::DBClientReplicaSet:
mongo::DBClientBase mongo::DBClientWithCommands mongo::DBConnector mongo::DBClientInterface

Classes

class  LazyState
 for storing (non-threadsafe) information between lazy calls More...
 

Public Member Functions

 DBClientReplicaSet (const string &name, const vector< HostAndPort > &servers, double so_timeout=0)
 Call connect() after constructing. More...
 
bool connect ()
 Returns false if no member of the set were reachable. More...
 
virtual void logout (const string &dbname, BSONObj &info)
 Logs out the connection for the given database. More...
 
virtual auto_ptr< DBClientCursorquery (const string &ns, Query query, int nToReturn=0, int nToSkip=0, const BSONObj *fieldsToReturn=0, int queryOptions=0, int batchSize=0)
 throws userassertion "no master found"
 
virtual BSONObj findOne (const string &ns, const Query &query, const BSONObj *fieldsToReturn=0, int queryOptions=0)
 throws userassertion "no master found"
 
virtual void insert (const string &ns, BSONObj obj, int flags=0)
 insert an object into the database
 
virtual void insert (const string &ns, const vector< BSONObj > &v, int flags=0)
 insert multiple objects. More...
 
virtual void remove (const string &ns, Query obj, int flags)
 
virtual void update (const string &ns, Query query, BSONObj obj, int flags)
 
virtual void killCursor (long long cursorID)
 
DBClientConnectionmasterConn ()
 WARNING: this method is very dangerous - this object can decide to free the returned master connection any time. More...
 
DBClientConnectionslaveConn ()
 WARNING: this method is very dangerous - this object can decide to free the returned master connection any time. More...
 
virtual void say (Message &toSend, bool isRetry=false, string *actualServer=0)
 
virtual bool recv (Message &toRecv)
 
virtual void checkResponse (const char *data, int nReturned, bool *retry=NULL, string *targetHost=NULL)
 
void isntMaster ()
 
void isntSecondary ()
 
virtual bool isFailed () const
 
bool isStillConnected ()
 if not checked recently, checks whether the underlying socket/sockets are still valid
 
double getSoTimeout () const
 
string toString () const
 
string getServerAddress () const
 
virtual
ConnectionString::ConnectionType 
type () const
 
virtual bool lazySupported () const
 
virtual bool call (Message &toSend, Message &response, bool assertOk=true, string *actualServer=0)
 actualServer is set to the actual server where they call went if there was a choice (SlaveOk)
 
virtual bool callRead (Message &toSend, Message &response)
 
virtual void setRunCommandHook (DBClientWithCommands::RunCommandHookFunc func)
 
virtual void setPostRunCommandHook (DBClientWithCommands::PostRunCommandHookFunc func)
 
- Public Member Functions inherited from mongo::DBClientBase
long long getConnectionId () const
 
WriteConcern getWriteConcern () const
 
void setWriteConcern (WriteConcern w)
 
void setWireVersions (int minWireVersion, int maxWireVersion)
 
int getMinWireVersion ()
 
int getMaxWireVersion ()
 
virtual unsigned long long query (boost::function< void(const BSONObj &)> f, const string &ns, Query query, const BSONObj *fieldsToReturn=0, int queryOptions=0)
 Uses QueryOption_Exhaust, when available. More...
 
virtual unsigned long long query (boost::function< void(DBClientCursorBatchIterator &)> f, const string &ns, Query query, const BSONObj *fieldsToReturn=0, int queryOptions=0)
 
virtual auto_ptr< DBClientCursorgetMore (const string &ns, long long cursorId, int nToReturn=0, int options=0)
 don't use this - called automatically by DBClientCursor for you More...
 
virtual void update (const string &ns, Query query, BSONObj obj, bool upsert=false, bool multi=false)
 updates objects matching query
 
virtual void remove (const string &ns, Query q, bool justOne=0)
 remove matching objects from the database More...
 
virtual uint64_t getSockCreationMicroSec () const
 
- Public Member Functions inherited from mongo::DBClientWithCommands
bool simpleCommand (const string &dbname, BSONObj *info, const string &command)
 helper function. More...
 
virtual bool runCommand (const string &dbname, const BSONObj &cmd, BSONObj &info, int options=0)
 Run a database command. More...
 
void auth (const BSONObj &params)
 Authenticate a user. More...
 
bool auth (const string &dbname, const string &username, const string &pwd, string &errmsg, bool digestPassword=true)
 Authorize access to a particular database. More...
 
virtual unsigned long long count (const string &ns, const BSONObj &query=BSONObj(), int options=0, int limit=0, int skip=0)
 count number of objects in collection ns that match the query criteria specified throws UserAssertion if database returns an error
 
virtual bool isMaster (bool &isMaster, BSONObj *info=0)
 returns true in isMaster parm if this db is the current master of a replica pair. More...
 
bool createCollection (const string &ns, long long size=0, bool capped=false, int max=0, BSONObj *info=0)
 Create a new collection in the database. More...
 
string getLastError (const std::string &db, bool fsync=false, bool j=false, int w=0, int wtimeout=0)
 Get error result from the last write operation (insert/update/delete) on this connection. More...
 
string getLastError (bool fsync=false, bool j=false, int w=0, int wtimeout=0)
 Same as the form of getLastError that takes a dbname, but just uses the admin DB.
 
virtual BSONObj getLastErrorDetailed (const std::string &db, bool fsync=false, bool j=false, int w=0, int wtimeout=0)
 Get error result from the last write operation (insert/update/delete) on this connection. More...
 
virtual BSONObj getLastErrorDetailed (bool fsync=false, bool j=false, int w=0, int wtimeout=0)
 Same as the form of getLastErrorDetailed that takes a dbname, but just uses the admin DB.
 
BSONObj getPrevError ()
 Return the last error which has occurred, even if not the very last operation. More...
 
bool resetError ()
 Reset the previous error state for this connection (accessed via getLastError and getPrevError). More...
 
virtual bool dropCollection (const string &ns, BSONObj *info=NULL)
 Delete the specified collection. More...
 
bool repairDatabase (const string &dbname, BSONObj *info=0)
 Perform a repair and compaction of the specified database. More...
 
bool copyDatabase (const string &fromdb, const string &todb, const string &fromhost="", BSONObj *info=0)
 Copy database from one server or name to another server or name. More...
 
bool setDbProfilingLevel (const string &dbname, ProfilingLevel level, BSONObj *info=0)
 
bool getDbProfilingLevel (const string &dbname, ProfilingLevel &level, BSONObj *info=0)
 
BSONObj mapreduce (const string &ns, const string &jsmapf, const string &jsreducef, BSONObj query=BSONObj(), MROutput output=MRInline)
 Run a map/reduce job on the server. More...
 
bool eval (const string &dbname, const string &jscode, BSONObj &info, BSONElement &retValue, BSONObj *args=0)
 Run javascript code on the database server. More...
 
bool validate (const string &ns, bool scandata=true)
 validate a collection, checking for errors and reporting back statistics. More...
 
bool eval (const string &dbname, const string &jscode)
 
template<class T >
bool eval (const string &dbname, const string &jscode, T parm1)
 
template<class T , class NumType >
bool eval (const string &dbname, const string &jscode, T parm1, NumType &ret)
 eval invocation with one parm to server and one numeric field (either int or double) returned
 
list< string > getDatabaseNames ()
 get a list of all the current databases uses the { listDatabases : 1 } command. More...
 
list< string > getCollectionNames (const string &db)
 get a list of all the current collections in db
 
bool exists (const string &ns)
 
virtual bool ensureIndex (const string &ns, BSONObj keys, bool unique=false, const string &name="", bool cache=true, bool background=false, int v=-1, int ttl=0)
 Create an index if it does not already exist. More...
 
virtual void resetIndexCache ()
 clears the index cache, so the subsequent call to ensureIndex for any index will go to the server
 
virtual auto_ptr< DBClientCursorgetIndexes (const string &ns)
 
virtual void dropIndex (const string &ns, BSONObj keys)
 
virtual void dropIndex (const string &ns, const string &indexName)
 
virtual void dropIndexes (const string &ns)
 drops all indexes for the collection
 
virtual void reIndex (const string &ns)
 
string genIndexName (const BSONObj &keys)
 
virtual bool dropDatabase (const string &dbname, BSONObj *info=0)
 Erase / drop an entire database.
 
RunCommandHookFunc getRunCommandHook () const
 
PostRunCommandHookFunc getPostRunCommandHook () const
 
- Public Member Functions inherited from mongo::DBClientInterface
void findN (vector< BSONObj > &out, const string &ns, Query query, int nToReturn, int nToSkip=0, const BSONObj *fieldsToReturn=0, int queryOptions=0)
 query N objects from the database into an array. More...
 

Static Public Member Functions

static bool isSecondaryQuery (const string &ns, const BSONObj &queryObj, int queryOptions)
 Returns whether a query or command can be sent to secondaries based on the query object and options. More...
 
- Static Public Member Functions inherited from mongo::DBClientWithCommands
static string createPasswordDigest (const string &username, const string &clearTextPassword)
 
static string getLastErrorString (const BSONObj &res)
 Can be called with the returned value from getLastErrorDetailed to extract an error string. More...
 

Protected Member Functions

virtual void _auth (const BSONObj &params)
 Authorize. More...
 
virtual void sayPiggyBack (Message &toSend)
 
- Protected Member Functions inherited from mongo::DBClientWithCommands
bool isOk (const BSONObj &)
 if the result of a command is ok
 
bool isNotMasterErrorString (const BSONElement &e)
 if the element contains a not master error
 
BSONObj _countCmd (const string &ns, const BSONObj &query, int options, int limit, int skip)
 
QueryOptions availableOptions ()
 Look up the options available on this client. More...
 
virtual QueryOptions _lookupAvailableOptions ()
 
bool _authMongoCR (const string &dbname, const string &username, const string &pwd, BSONObj *info, bool digestPassword)
 Use the MONGODB-CR protocol to authenticate as "username" against the database "dbname", with the given password. More...
 
bool _authX509 (const string &dbname, const string &username, BSONObj *info)
 Use the MONGODB-X509 protocol to authenticate as "username. More...
 

Protected Attributes

class
mongo::DBClientReplicaSet::LazyState 
_lazyState
 
- Protected Attributes inherited from mongo::DBClientBase
long long _connectionId
 
WriteConcern _writeConcern
 
int _minWireVersion
 
int _maxWireVersion
 
- Protected Attributes inherited from mongo::DBClientWithCommands
RunCommandHookFunc _runCommandHook
 These functions will be executed by the driver on runCommand calls.
 
PostRunCommandHookFunc _postRunCommandHook
 

Additional Inherited Members

- Public Types inherited from mongo::DBClientWithCommands
enum  ProfilingLevel { ProfileOff = 0, ProfileSlow = 1, ProfileAll = 2 }
 The Mongo database provides built-in performance profiling capabilities. More...
 
typedef boost::function< void(BSONObjBuilder *)> RunCommandHookFunc
 A function type for runCommand hooking; the function takes a pointer to a BSONObjBuilder and returns nothing. More...
 
typedef boost::function< void(const
BSONObj &, const std::string &)> 
PostRunCommandHookFunc
 Similar to above, but for running a function on a command response after a command has been run.
 
- Public Attributes inherited from mongo::DBClientWithCommands
logger::LogSeverity _logLevel
 controls how chatty the client is about network errors & such. More...
 
- Static Public Attributes inherited from mongo::DBClientBase
static const uint64_t INVALID_SOCK_CREATION_TIME
 
- Static Public Attributes inherited from mongo::DBClientWithCommands
static MROutput MRInline
 
- Static Protected Attributes inherited from mongo::DBClientBase
static AtomicInt64 ConnectionIdSequence
 

Detailed Description

Use this class to connect to a replica set of servers.

The class will manage checking for which server in a replica set is master, and do failover automatically.

This can also be used to connect to replica pairs since pairs are a subset of sets

On a failover situation, expect at least one operation to return an error (throw an exception) before the failover is complete. Operations are not retried.

Constructor & Destructor Documentation

mongo::DBClientReplicaSet::DBClientReplicaSet ( const string &  name,
const vector< HostAndPort > &  servers,
double  so_timeout = 0 
)

Call connect() after constructing.

autoReconnect is always on for DBClientReplicaSet connections.

Member Function Documentation

void mongo::DBClientReplicaSet::_auth ( const BSONObj params)
protectedvirtual

Authorize.

Authorizes all nodes as needed

Reimplemented from mongo::DBClientWithCommands.

bool mongo::DBClientReplicaSet::connect ( )

Returns false if no member of the set were reachable.

This object can still be used even when false was returned as it will try to reconnect when you use it later.

void mongo::DBClientReplicaSet::insert ( const string &  ns,
const vector< BSONObj > &  v,
int  flags = 0 
)
virtual

insert multiple objects.

Note that single object insert is asynchronous, so this version is only nominally faster and not worth a special effort to try to use.

Reimplemented from mongo::DBClientBase.

bool mongo::DBClientReplicaSet::isSecondaryQuery ( const string &  ns,
const BSONObj queryObj,
int  queryOptions 
)
static

Returns whether a query or command can be sent to secondaries based on the query object and options.

Parameters
nsthe namespace of the query.
queryObjthe query object to check.
queryOptionsthe query options
Returns
true if the query/cmd could potentially be sent to a secondary, false otherwise
void mongo::DBClientReplicaSet::logout ( const string &  dbname,
BSONObj info 
)
virtual

Logs out the connection for the given database.

Parameters
dbnamethe database to logout from.
infothe result object for the logout command (provided for backwards compatibility with mongo shell)

Reimplemented from mongo::DBClientWithCommands.

DBClientConnection & mongo::DBClientReplicaSet::masterConn ( )

WARNING: this method is very dangerous - this object can decide to free the returned master connection any time.

Returns
the reference to the address that points to the master connection.
DBClientConnection & mongo::DBClientReplicaSet::slaveConn ( )

WARNING: this method is very dangerous - this object can decide to free the returned master connection any time.

This can also unpin the cached slaveOk/read preference connection.

Returns
the reference to the address that points to a secondary connection.

The documentation for this class was generated from the following files: