00001 #ifndef _PARAM_READER_H 00002 #define _PARAM_READER_H 00003 00004 #include "BinaryLogObject.h" 00005 #include "params.h" 00006 00007 namespace ParamReader_namespace { 00008 typedef params::StringMap ParamReaderMap; 00009 00010 class ParamReader : public mace::BinaryLogObject, public mace::PrintPrintable { 00011 public: 00012 static const std::string type; 00013 ParamReaderMap paramMap; 00014 00015 ParamReader() { 00016 } 00017 00018 ParamReader(const params::StringMap& m) { 00019 paramMap = m; 00020 } 00021 00022 public: 00023 void serialize(std::string& __str) const { 00024 uint64_t size = paramMap.size(); 00025 00026 mace::serialize(__str, &size); 00027 00028 for (ParamReaderMap::const_iterator i = paramMap.begin(); 00029 i != paramMap.end(); i++) { 00030 mace::serialize(__str, &i->first); 00031 mace::serialize(__str, &i->second); 00032 } 00033 } 00034 00035 int deserialize(std::istream& is) throw(mace::SerializationException) { 00036 uint64_t size; 00037 int ret = 0; 00038 00039 ret += mace::deserialize(is, &size); 00040 00041 for (uint64_t i = 0; i < size; i++) { 00042 std::string key, value; 00043 00044 ret += mace::deserialize(is, &key); 00045 ret += mace::deserialize(is, &value); 00046 paramMap[key] = value; 00047 } 00048 return ret; 00049 } 00050 00051 void print(std::ostream& __out) const { 00052 for (ParamReaderMap::const_iterator i = paramMap.begin(); 00053 i != paramMap.end(); i++) { 00054 __out << std::endl << i->first << " = " << i->second; 00055 } 00056 } 00057 00058 const std::string& getLogType() const { 00059 return type; 00060 } 00061 00062 const std::string& getLogDescription() const { 00063 static const std::string desc = "Param"; 00064 return desc; 00065 } 00066 00067 LogClass getLogClass() const { 00068 return PARAM; 00069 } 00070 }; 00071 00072 void init(); 00073 } 00074 00075 #endif // _PARAM_READER_H