diff --git a/server/notifyserver/src/main.rs b/server/notifyserver/src/main.rs index e00c1b3..5d0fd05 100755 --- a/server/notifyserver/src/main.rs +++ b/server/notifyserver/src/main.rs @@ -1,113 +1,7 @@ -use std::rc::Rc; +use std::rc::{Rc, Weak}; use std::cell::RefCell; -use protobuf::Message; -use protobuf::descriptor::FieldDescriptorProto_Type; use r9; -mod test; -mod mt; -mod metawrap; -mod metamgr; - -#[derive(Clone)] -pub enum MessagesUnion -{ - MtwAliKeyConf(Rc::) -} - -impl r9::ProtoMsg for MessagesUnion { - - fn deserialize(&self, - obj: &serde_json::Map, - id_key: &mut i64, - name_key: &mut String) { - if let MessagesUnion::MtwAliKeyConf(meta) = self { - let pb = &mut meta.p.borrow_mut(); - let desc = pb.descriptor(); - let mut v = Vec::::new(); - { - v.resize(1024 * 1000, 0); - let mut os = ::protobuf::CodedOutputStream::bytes(&mut v); - for field in desc.fields() { - let field_desc = field.proto(); - match obj.get(field.name()) { - Some(v) => { - match field_desc.get_field_type() { - FieldDescriptorProto_Type::TYPE_STRING => { - os.write_string(field_desc.get_number() as u32, v.as_str().unwrap()); - }, - _ => { - - } - } - } - None => { - - } - } - } - } - let mut slice: &[u8] = v.as_slice(); - let is = &mut ::protobuf::CodedInputStream::new(&mut slice); - pb.merge_from(is); - } - } -} - -type XValue = r9::XValue::; -type MetaMgr = r9::MetaMgr::; - -macro_rules! getMeta { - ($metamgr:expr, $ty:ident, $idx:expr) => { - { - let mut ret = Option::None; - if let Some(v) = $metamgr.get_byid(0, $idx) { - if let MessagesUnion::$ty(v1) = &(**v) { - ret = Some(v1); - } - } - ret - } - } -} - -struct TestA { - -} - fn main() { - let mut metamgr = MetaMgr::new(); - let p = metawrap::MtwAliKeyConf{ - p: RefCell::new(crate::mt::AliKeyConf::new()) - }; - let dummy = Rc::new(p); - metamgr.register_meta( - "/var/data/conf_test/analyseapi/ali_key.json".to_string(), - 0, - "".to_string(), - "".to_string(), - MessagesUnion::MtwAliKeyConf(dummy) - ); - metamgr.load(); - let b = getMeta!(metamgr, MtwAliKeyConf, 0); - match b { - Some(v) => { - println!("{}", v.p.borrow().get_access_keyid()); - println!("{}", v.p.borrow().get_access_secret()); - } - None => { - - } - } - { - let mut testA = TestA{}; - let mut a = RefCell::new(crate::mt::AliKeyConf::new()); - { - let p = RefCell::new(crate::mt::AliKeyConf::new()); - a = p; - let testB = TestA{}; - testA = testB; - } - } } diff --git a/server/notifyserver/src/metamgr.rs b/server/notifyserver/src/metamgr.rs deleted file mode 100644 index cc70d06..0000000 --- a/server/notifyserver/src/metamgr.rs +++ /dev/null @@ -1,48 +0,0 @@ -use std::rc::Rc; -use std::any::Any; -use std::collections::HashMap; - -pub struct MetaClass { - file_name: String, - idx: i32, - prim_key: String, - raw_list: Vec>, - id_hash: HashMap>, - name_hash: HashMap>, -} - -pub struct MetaMgr { - meta_classes: Vec> -} - -impl MetaMgr { - - pub fn register_meta_class(&mut self, file_name: String, idx: i32, prim_key: String, sec_key: String) { - let cls = MetaClass{ - file_name: String::from("hello"), - idx: 1, - prim_key: String::from("key"), - raw_list: Vec::new(), - id_hash: HashMap::new(), - name_hash: HashMap::new() - }; - self.meta_classes.push(Box::new(cls)); - } - - pub fn get_byid(&mut self, idx: i32, id: i64) -> Option<&Rc> { - if (idx as usize) < self.meta_classes.len() { - match self.meta_classes[idx as usize].id_hash.get(&id) { - Some(v) => { - if let Some(item) = v.downcast_ref::>() { - return Some(item) - } - } - None => { - - } - } - } - return None; - } - -} diff --git a/server/notifyserver/src/metawrap.rs b/server/notifyserver/src/metawrap.rs deleted file mode 100644 index 4d9750c..0000000 --- a/server/notifyserver/src/metawrap.rs +++ /dev/null @@ -1,5 +0,0 @@ -use std::cell::RefCell; - -pub struct MtwAliKeyConf { - pub p: RefCell -} diff --git a/server/notifyserver/src/test.rs b/server/notifyserver/src/test.rs deleted file mode 100644 index 148bc2f..0000000 --- a/server/notifyserver/src/test.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub struct App { -} - -pub fn hello(val: &crate::XValue) -> i64 { - return val.get_i64(); -} diff --git a/third_party/r9 b/third_party/r9 index 9f8a1d6..b3b93c6 160000 --- a/third_party/r9 +++ b/third_party/r9 @@ -1 +1 @@ -Subproject commit 9f8a1d68897f7c86a606b3cfa70f5fd0612e26f7 +Subproject commit b3b93c650eea2a9564acd680f647ba19cd6c6a66