1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
use serde_json::Value;
use zbus_lib::err::ZbusResult;
mod frame;
mod common;
mod app;
mod utils;
#[cfg(test)]
mod tests {
use zbus_lib::rpc::IOHandlers;
use serde_json::Value;
use crate::extract_face_feature;
use zbus_lib::service::WsRpcServer;
use std::time::Duration;
use crate::prelude::App;
#[test]
fn it_works() {
let app = App;
let n_workers = 10;
let mut io_handler = IOHandlers::new(n_workers);
io_handler.add_method("/face/faceCheck/extractFaceFeature".into(), move |mut params: Value| {
Ok(if params.is_array() {
let params = params.as_array_mut().unwrap();
params.reverse();
let a = params.pop().unwrap();
let a = serde_json::from_value(a).unwrap();
let result = extract_face_feature(a);
match result {
Ok(result) => { result }
Err(e) => { Value::Null }
}
} else {
Value::Null
})
});
let rpc_server = WsRpcServer::connect("ws://127.0.0.1:15555", "/face".into(), io_handler);
rpc_server.registry_service();
println!("准备结束");
use std::thread;
thread::sleep(Duration::from_secs(100));
}
}
fn extract_face_feature(data: String) -> ZbusResult<Value> {
Ok(Value::String("success".to_string()))
}
pub mod prelude {
pub use crate::app::App;
pub use crate::app::Component;
pub use crate::frame::*;
}