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;
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