diff --git a/server/imserver/CMakeLists.txt b/server/imserver/CMakeLists.txt index 9251b73..d84de32 100644 --- a/server/imserver/CMakeLists.txt +++ b/server/imserver/CMakeLists.txt @@ -64,6 +64,8 @@ execute_process( COMMAND touch -a cs_proto.pb.cc COMMAND touch -a cs_msgid.pb.h COMMAND touch -a cs_msgid.pb.cc + COMMAND touch -a metatable.pb.h + COMMAND touch -a metatable.pb.cc ) aux_source_directory(. SRC_LIST @@ -80,7 +82,7 @@ add_executable( add_custom_target(script_pb_protocol ALL) add_custom_command(TARGET script_pb_protocol PRE_BUILD - COMMAND python ../../third_party/tools/scripts/construct/build_pb.py --cpp_out=. --pb_files=ss_proto,ss_msgid,cs_msgid,cs_proto --python_out=../tools/robot/virtualclient + COMMAND python ../../third_party/tools/scripts/construct/build_pb.py --cpp_out=. --pb_files=ss_proto,ss_msgid,cs_msgid,cs_proto,metatable --python_out=../tools/robot/virtualclient ) add_dependencies(friend_imserver script_pb_protocol) diff --git a/server/imserver/metadata.cc b/server/imserver/metadata.cc new file mode 100644 index 0000000..d94e54a --- /dev/null +++ b/server/imserver/metadata.cc @@ -0,0 +1,3 @@ +#include "precompile.h" + +#include "metadata.h" diff --git a/server/imserver/metadata.h b/server/imserver/metadata.h new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/server/imserver/metadata.h @@ -0,0 +1 @@ +#pragma once diff --git a/server/imserver/metamgr.cc b/server/imserver/metamgr.cc new file mode 100644 index 0000000..af86201 --- /dev/null +++ b/server/imserver/metamgr.cc @@ -0,0 +1,84 @@ +#include "precompile.h" + +#include + +#include +#include + +#include "framework/cpp/utils.h" + +#include "metamgr.h" +#include "app.h" +#include "jsondatamgr.h" + +#define METAMGR_READ(field_name, def_val) MetaMgr::Instance()->field_name = \ + a8::XValue(MetaMgr::Instance()->GetSysParamAsString(#field_name, #def_val)); + +#define METAMGR_READ_STR(field_name, def_val) MetaMgr::Instance()->field_name = \ + a8::XValue(MetaMgr::Instance()->GetSysParamAsString(#field_name, def_val)).GetString(); + +class MetaDataLoader +{ +public: + std::map > dirty_words; + + void Load() + { + if (!f8::IsOnlineEnv()) { + if (f8::IsTestEnv()) { + res_path = a8::Format("/root/pub/%d/%d/conf_test/game%d/rankserver.test/res%d/", + { + GAME_ID, + App::Instance()->instance_id, + GAME_ID, + App::Instance()->instance_id + }); + } else { + res_path = a8::Format("/root/pub/%d/%d/conf_test/game%d/rankserver.dev/res%d/", + { + GAME_ID, + App::Instance()->instance_id, + GAME_ID, + App::Instance()->instance_id + }); + } + } else { + res_path = "../res/"; + } + Check(); + } + +private: + + void Check() + { + } + + void BindToMetaData() + { + } + +private: + std::string res_path; +}; + +void MetaMgr::Init() +{ + loader_ = new MetaDataLoader(); + loader_->Load(); +} + +void MetaMgr::UnInit() +{ + delete loader_; + loader_ = nullptr; +} + +void MetaMgr::Reload() +{ + delete loader_; + loader_ = nullptr; + + loader_ = new MetaDataLoader(); + loader_->Load(); +} diff --git a/server/imserver/metamgr.h b/server/imserver/metamgr.h new file mode 100644 index 0000000..faa0fab --- /dev/null +++ b/server/imserver/metamgr.h @@ -0,0 +1,23 @@ +#pragma once + +#include "metadata.h" + +class MetaDataLoader; +class MetaMgr : public a8::Singleton +{ + + private: + MetaMgr() {}; + friend class a8::Singleton; + + public: + + void Init(); + void UnInit(); + void Reload(); + + private: + MetaDataLoader* loader_ = nullptr; + + friend class MetaDataLoader; +};