diff options
Diffstat (limited to 'tools/tool.h')
-rw-r--r-- | tools/tool.h | 58 |
1 files changed, 35 insertions, 23 deletions
diff --git a/tools/tool.h b/tools/tool.h index 900c02f..f6124b8 100644 --- a/tools/tool.h +++ b/tools/tool.h @@ -35,82 +35,94 @@ namespace mongo { class Tool { public: - Tool( string name , bool localDBAllowed=true, string defaultDB="test" , - string defaultCollection="", bool usesstdout=true ); + enum DBAccess { + NONE = 0 , + REMOTE_SERVER = 1 << 1 , + LOCAL_SERVER = 1 << 2 , + SPECIFY_DBCOL = 1 << 3 , + ALL = REMOTE_SERVER | LOCAL_SERVER | SPECIFY_DBCOL + }; + + Tool( string name , DBAccess access=ALL, string defaultDB="test" , + string defaultCollection="", bool usesstdout=true); virtual ~Tool(); int main( int argc , char ** argv ); - boost::program_options::options_description_easy_init add_options(){ + boost::program_options::options_description_easy_init add_options() { return _options->add_options(); } - boost::program_options::options_description_easy_init add_hidden_options(){ + boost::program_options::options_description_easy_init add_hidden_options() { return _hidden_options->add_options(); } - void addPositionArg( const char * name , int pos ){ + void addPositionArg( const char * name , int pos ) { _positonalOptions.add( name , pos ); } - string getParam( string name , string def="" ){ + string getParam( string name , string def="" ) { if ( _params.count( name ) ) return _params[name.c_str()].as<string>(); return def; } - int getParam( string name , int def ){ + int getParam( string name , int def ) { if ( _params.count( name ) ) return _params[name.c_str()].as<int>(); return def; } - bool hasParam( string name ){ + bool hasParam( string name ) { return _params.count( name ); } - string getNS(){ - if ( _coll.size() == 0 ){ + string getNS() { + if ( _coll.size() == 0 ) { cerr << "no collection specified!" << endl; throw -1; } return _db + "." + _coll; } - - virtual void preSetup(){} + + bool isMaster(); + + virtual void preSetup() {} virtual int run() = 0; virtual void printHelp(ostream &out); - virtual void printExtraHelp( ostream & out ){} - virtual void printExtraHelpAfter( ostream & out ){} + virtual void printExtraHelp( ostream & out ) {} + virtual void printExtraHelpAfter( ostream & out ) {} protected: mongo::DBClientBase &conn( bool slaveIfPaired = false ); void auth( string db = "" ); - + string _name; string _db; string _coll; + string _fileName; string _username; string _password; - + bool _usesstdout; bool _noconnection; bool _autoreconnect; void addFieldOptions(); void needFields(); - + vector<string> _fields; BSONObj _fieldsObj; - + string _host; protected: mongo::DBClientBase * _conn; + mongo::DBClientBase * _slaveConn; bool _paired; boost::program_options::options_description * _options; @@ -124,17 +136,17 @@ namespace mongo { class BSONTool : public Tool { bool _objcheck; auto_ptr<Matcher> _matcher; - + public: - BSONTool( const char * name , bool objcheck = false ); - + BSONTool( const char * name , DBAccess access=ALL, bool objcheck = false ); + virtual int doRun() = 0; virtual void gotObject( const BSONObj& obj ) = 0; - + virtual int run(); long long processFile( const path& file ); - + }; } |