projects
/
litoprism.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c5153bd
)
Force actix-web to differentiate between canvases
author
MegaBrutal
<code+git@megabrutal.com>
Sun, 17 Jul 2022 23:15:00 +0000
(
01:15
+0200)
committer
MegaBrutal
<code+git@megabrutal.com>
Sun, 17 Jul 2022 23:15:00 +0000
(
01:15
+0200)
src/main.rs
patch
|
blob
|
history
diff --git
a/src/main.rs
b/src/main.rs
index 46185508532bc9120a598df2cbf42128ca89426e..f502a9d47ea87b78b235d63035bd848661d59cc6 100644
(file)
--- a/
src/main.rs
+++ b/
src/main.rs
@@
-146,6
+146,9
@@
impl Canvas {
}
}
}
}
+struct Canvas0(Option<Canvas>);
+struct Canvas1(Option<Canvas>);
+
#[get("/hello/{name}")]
async fn greet(name: web::Path<String>, req: HttpRequest) -> impl Responder {
println!("{:?}", req);
#[get("/hello/{name}")]
async fn greet(name: web::Path<String>, req: HttpRequest) -> impl Responder {
println!("{:?}", req);
@@
-240,13
+243,13
@@
async fn img_gen1(req: HttpRequest, path: web::Path<(u32, u32, u32)>) -> Result<
}
#[get("/pgen/0/{data}")]
}
#[get("/pgen/0/{data}")]
-async fn img_pgen0(req: HttpRequest, canvas0: web::Data<Arc<Mutex<
Option<Canvas>
>>>) -> Result<impl Responder> {
+async fn img_pgen0(req: HttpRequest, canvas0: web::Data<Arc<Mutex<
Canvas0
>>>) -> Result<impl Responder> {
let data = req.uri().path().split("/").skip(3).next().unwrap();
let mut cursor = Cursor::new(Vec::new());
let scale = 16;
let img: RgbImage = ({
let canvas_option = &mut *canvas0.lock().unwrap();
let data = req.uri().path().split("/").skip(3).next().unwrap();
let mut cursor = Cursor::new(Vec::new());
let scale = 16;
let img: RgbImage = ({
let canvas_option = &mut *canvas0.lock().unwrap();
- Ok(apply_to_canvas( |c, d| to_canvasresult(rgb_encode_to_canvas(c, d)),
canvas_option
, None, data)?.img.clone())
+ Ok(apply_to_canvas( |c, d| to_canvasresult(rgb_encode_to_canvas(c, d)),
&mut canvas_option.0
, None, data)?.img.clone())
} as Result<RgbImage, CanvasError>)?;
let (tdim_x, tdim_y) = img.dimensions();
let (tdim_x, tdim_y) = (tdim_x * scale, tdim_y * scale);
} as Result<RgbImage, CanvasError>)?;
let (tdim_x, tdim_y) = img.dimensions();
let (tdim_x, tdim_y) = (tdim_x * scale, tdim_y * scale);
@@
-258,12
+261,12
@@
async fn img_pgen0(req: HttpRequest, canvas0: web::Data<Arc<Mutex<Option<Canvas>
}
#[get("/pgen/1/{dim_x}/{dim_y}/{scale}/{data}")]
}
#[get("/pgen/1/{dim_x}/{dim_y}/{scale}/{data}")]
-async fn img_pgen1(req: HttpRequest, path: web::Path<(u32, u32, u32)>, canvas1: web::Data<Arc<Mutex<
Option<Canvas>
>>>) -> Result<impl Responder> {
+async fn img_pgen1(req: HttpRequest, path: web::Path<(u32, u32, u32)>, canvas1: web::Data<Arc<Mutex<
Canvas1
>>>) -> Result<impl Responder> {
let (dim_x, dim_y, scale) = path.into_inner();
let data = req.uri().path().split("/").skip(6).next().unwrap();
let img: RgbImage = ({
let canvas_option = &mut *canvas1.lock().unwrap();
let (dim_x, dim_y, scale) = path.into_inner();
let data = req.uri().path().split("/").skip(6).next().unwrap();
let img: RgbImage = ({
let canvas_option = &mut *canvas1.lock().unwrap();
- Ok(apply_to_canvas( |c, d| to_canvasresult(rgb_encode_to_canvas(c, d)),
canvas_option
, Some((dim_x, dim_y)), data)?.img.clone())
+ Ok(apply_to_canvas( |c, d| to_canvasresult(rgb_encode_to_canvas(c, d)),
&mut canvas_option.0
, Some((dim_x, dim_y)), data)?.img.clone())
} as Result<RgbImage, CanvasError>)?;
let (tdim_x, tdim_y) = img.dimensions();
let (tdim_x, tdim_y) = (tdim_x * scale, tdim_y * scale);
} as Result<RgbImage, CanvasError>)?;
let (tdim_x, tdim_y) = img.dimensions();
let (tdim_x, tdim_y) = (tdim_x * scale, tdim_y * scale);
@@
-279,8
+282,8
@@
async fn img_pgen1(req: HttpRequest, path: web::Path<(u32, u32, u32)>, canvas1:
#[actix_web::main] // or #[tokio::main]
async fn main() -> std::io::Result<()> {
env_logger::init();
#[actix_web::main] // or #[tokio::main]
async fn main() -> std::io::Result<()> {
env_logger::init();
- let canvas0 = Arc::new(Mutex::new(
Some(Canvas::new(32, 32
))));
- let canvas1 = Arc::new(Mutex::new(
None as Option<Canvas>
));
+ let canvas0 = Arc::new(Mutex::new(
Canvas0(Some(Canvas::new(32, 32)
))));
+ let canvas1 = Arc::new(Mutex::new(
Canvas1(None)
));
HttpServer::new(move || {
App::new()
.service(greet)
HttpServer::new(move || {
App::new()
.service(greet)