00001 00002 #ifndef _Q_BASE_CLIENT_HH_ 00003 #define _Q_BASE_CLIENT_HH_ 00004 00005 #include "QCuore.hh" 00006 #include "QApolloSocketClient.hh" 00007 #include "QError.hh" 00008 00009 #include <string> 00010 #include <list> 00011 00012 class QNwMessageBuilder; 00013 00022 class QBaseClient: protected QApolloSocketClient 00023 { 00024 public: 00025 00027 virtual ~QBaseClient(); 00028 00035 void SetConnectionMode(bool alwaysOpen) { fConnMode = alwaysOpen;} 00036 00042 bool GetConnectionMode() const { return fConnMode; } 00043 00045 const QError& GetError() const { return fError; } 00046 00047 protected: 00056 QBaseClient(const std::string& serverType); 00057 00063 QBaseClient(const std::string& address, const std::string& port); 00064 00071 bool fConnMode; 00072 00073 QError fError; 00074 00084 bool GetInt(const std::string& name, int& val); 00085 00095 bool GetBool(const std::string& name, bool& val); 00096 00106 bool GetDouble(const std::string& name, double& val); 00107 00117 bool GetString(const std::string& name, std::string& val); 00118 00124 bool GetParList(const std::string& name, std::list<std::string>& values); 00125 00127 bool IsParamDefined (const std::string& name); 00128 00135 bool ExecCommand(const QNwMessageBuilder& builder, std::string& answer); 00136 00137 private: 00138 00144 std::map<std::string, std::list<std::string> > fAnswerMap; 00145 00150 void ProcessAnswer(std::string answer); 00151 00153 void BuildError(); 00154 00155 }; 00156 00157 #endif