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