diff --git a/server/notifyserver/Cargo.toml b/server/notifyserver/Cargo.toml index 09e917a..28fa163 100644 --- a/server/notifyserver/Cargo.toml +++ b/server/notifyserver/Cargo.toml @@ -7,6 +7,9 @@ edition = "2021" [dependencies] protobuf = "2.25.2" +serde = "*" +serde_derive = "*" +serde_json = "*" r9 = { path = "../../third_party/r9" } [build-dependencies] diff --git a/server/notifyserver/src/main.rs b/server/notifyserver/src/main.rs index 2759c74..cdb59c2 100755 --- a/server/notifyserver/src/main.rs +++ b/server/notifyserver/src/main.rs @@ -1,4 +1,7 @@ use std::rc::Rc; +use std::fs::File; +use protobuf::Message; +use protobuf::descriptor::FieldDescriptorProto_Type; use r9; @@ -6,12 +9,20 @@ mod test; mod mt; mod metawrap; +#[derive(Clone)] pub enum MessagesUnion { - XValue(Rc::), MtwAliKeyConf(Rc::) } +impl MessagesUnion { + + pub fn from_json(&mut self) { + + } + +} + type XValue = r9::XValue::; type MetaMgr = r9::MetaMgr::; @@ -42,4 +53,20 @@ fn main() { } } + let mut msg = mt::AliKeyConf::new(); + msg.set_value(100); + msg.set_access_keyid("abcdefg".to_string()); + let desc = msg.descriptor(); + for field in desc.fields() { + let field_desc = field.proto(); + if field_desc.get_field_type() == FieldDescriptorProto_Type::TYPE_STRING { + print!("field_name:{} value:{}\n", field.name(), field.get_str(&msg)); + } + } + + let f = File::open("/root/pub/2005/1/conf_test/game2005/gameserver.dev/node1/game2005.gameserver.cluster.json").unwrap(); + let v: serde_json::Value = serde_json::from_reader(f).unwrap(); + println!("{:?}", v[0]["ip"].as_str().unwrap()); + println!("{:?}", v[0]["instance_id"].as_i64().unwrap()); + }