00001 #ifndef _CONFIG_H__
00002 #define _CONFIG_H__
00003
00004 #include <awds/ext/Shell.h>
00005 #include <awds/MarshalStream.h>
00006 #include "awds/configVariable.h"
00007
00020 class Config
00021 {
00022
00023 private:
00024 ShellClient* shellClient;
00025 int requestCount;
00026
00027 protected:
00028
00029 typedef std::map<std::string, ConfigVariable* > VariablesMap;
00030 VariablesMap remoteVariables;
00031 std::map<gea::AbsTime,unsigned int> requests;
00032 std::map<gea::AbsTime,std::string> response;
00033
00034
00035 public:
00036
00037
00038
00039 Config();
00040
00052 virtual int registerVar(ConfigVariable* cv);
00053 int configAddCommand();
00054 int remoteCall(std::string variableName,std::string variableValue,std::string nodeList);
00055
00056 static int remoteconfig_command_fn(ShellClient &sc, void *data, int argc, char **argv);
00071 static int requestHandler (void *data, ReadMarshalStream* msIn, WriteMarshalStream* msOut, const awds::NodeId& src);
00083 static int responseHandler (void *data, ReadMarshalStream* msIn, const awds::NodeId& src);
00094 static void requestCreator (void *data, WriteMarshalStream* msOut);
00103 static void finishedHandler (void *data);
00104
00105 };
00106
00107 #endif