1
This commit is contained in:
parent
486d7c038a
commit
f90b03aebb
@ -6,6 +6,9 @@ edition = "2021"
|
|||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
serde = "*"
|
||||||
|
serde_derive = "*"
|
||||||
|
serde_json = "*"
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { version = "1", features = ["full"] }
|
||||||
actix-web = "4"
|
actix-web = "4"
|
||||||
r9 = { path = "../r9" }
|
r9 = { path = "../r9" }
|
||||||
|
@ -8,13 +8,15 @@ use actix_web::{
|
|||||||
web,
|
web,
|
||||||
App as WebApp,
|
App as WebApp,
|
||||||
web::Data,
|
web::Data,
|
||||||
|
web::Query,
|
||||||
HttpRequest,
|
HttpRequest,
|
||||||
HttpResponse,
|
HttpResponse,
|
||||||
HttpServer,
|
HttpServer,
|
||||||
Responder};
|
Responder};
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
//use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
|
use serde_derive::Deserialize;
|
||||||
|
|
||||||
use r9_macro::SharedFromSelf;
|
use r9_macro::SharedFromSelf;
|
||||||
use r9_macro_derive::SharedFromSelf;
|
use r9_macro_derive::SharedFromSelf;
|
||||||
@ -38,9 +40,16 @@ pub struct App {
|
|||||||
im_msgs: Rc::<RefCell::<r9::ListHead::<IMMsgNode>>>,
|
im_msgs: Rc::<RefCell::<r9::ListHead::<IMMsgNode>>>,
|
||||||
im_work_msgs: Rc::<RefCell::<r9::ListHead::<IMMsgNode>>>,
|
im_work_msgs: Rc::<RefCell::<r9::ListHead::<IMMsgNode>>>,
|
||||||
im_mutex: Mutex<i32>,
|
im_mutex: Mutex<i32>,
|
||||||
|
http_handlers: HashMap<String, Box::<dyn FnMut (&Option<Vec<Rc::<dyn Any>>>)>>,
|
||||||
webapp_state: Arc::<AppState>,
|
webapp_state: Arc::<AppState>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
struct Ca {
|
||||||
|
c: String,
|
||||||
|
a: String
|
||||||
|
}
|
||||||
|
|
||||||
struct AppState {
|
struct AppState {
|
||||||
request: Arc<Mutex<Vec<Arc<Mutex<HttpContext>>>>>,
|
request: Arc<Mutex<Vec<Arc<Mutex<HttpContext>>>>>,
|
||||||
}
|
}
|
||||||
@ -58,6 +67,7 @@ struct HttpContext {
|
|||||||
query_str: String,
|
query_str: String,
|
||||||
add_tick: i64,
|
add_tick: i64,
|
||||||
handled: bool,
|
handled: bool,
|
||||||
|
//not_found: bool,
|
||||||
rsp: String
|
rsp: String
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +131,7 @@ impl App {
|
|||||||
im_msgs: r9::ListHead::<IMMsgNode>::new_head(),
|
im_msgs: r9::ListHead::<IMMsgNode>::new_head(),
|
||||||
im_work_msgs: r9::ListHead::<IMMsgNode>::new_head(),
|
im_work_msgs: r9::ListHead::<IMMsgNode>::new_head(),
|
||||||
im_mutex: Mutex::new(1),
|
im_mutex: Mutex::new(1),
|
||||||
|
http_handlers: Default::default(),
|
||||||
webapp_state: Arc::new(
|
webapp_state: Arc::new(
|
||||||
AppState{
|
AppState{
|
||||||
request: Default::default()
|
request: Default::default()
|
||||||
@ -237,6 +248,9 @@ impl App {
|
|||||||
let c = v.pop();
|
let c = v.pop();
|
||||||
match c {
|
match c {
|
||||||
Some(v) => {
|
Some(v) => {
|
||||||
|
let query = web::Query::<Ca>::from_query(&v.lock().unwrap().query_str).unwrap();
|
||||||
|
|
||||||
|
println!("c={}&a={}", query.c, query.a);
|
||||||
v.lock().unwrap().rsp = "dsafsf".to_string();
|
v.lock().unwrap().rsp = "dsafsf".to_string();
|
||||||
v.lock().unwrap().handled = true;
|
v.lock().unwrap().handled = true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user