00001 #ifndef SCTSERVICE_ARGUMENTS_H 00002 #define SCTSERVICE_ARGUMENTS_H 00003 #include <iostream> 00004 #include <string> 00005 #include <list> 00006 00007 namespace SctService { 00008 00010 class Arguments{ 00011 public: 00012 class Subscription; 00017 Arguments(int argc, char** argv); 00021 unsigned getNWorkers() const; 00025 void setNWorkers(const unsigned n); 00029 std::string getOutputISServer() const; 00033 void setOutputISServer(const std::string& name); 00038 std::list<Subscription> getInputISServers() const; 00042 bool recoveryMode() const; 00046 void setRecoveryMode(const bool); 00050 void setInstanceName(const std::string& value); 00054 std::string instanceName() const; 00058 std::string getISStatusName() const; 00062 void setISStatusName(const std::string&); 00066 virtual void print(std::ostream& os) const; 00070 virtual std::string print() const; 00074 virtual void printHelp(std::ostream& os) const; 00078 virtual std::string printHelp() const; 00082 virtual ~Arguments(); 00086 static std::list<std::string> makeList(int argc, char** argv); 00087 protected: 00091 void parse(); 00099 std::string next(std::list<std::string>::iterator& it) const; 00100 std::list<std::string> m_list; //< record of list of arguments 00101 00102 class Subscription{ 00103 public: 00104 Subscription(std::string server, std::string regexp); 00105 std::string server; 00106 std::string regexp; 00107 protected: 00108 Subscription(); 00109 }; 00110 private: 00111 Arguments(); 00112 unsigned m_nworkers; 00113 std::string m_options; 00114 std::string m_output; 00115 std::list<Subscription> m_input; 00116 bool m_recovery; 00117 std::string m_instanceName; 00118 std::string m_status_name; 00119 const static unsigned MAX_WORKERS=10; 00120 }; 00121 00122 } 00123 #endif