diff options
author | yuzu <yuzu@b9215c17-b818-4693-b096-d1e41a411fef> | 2025-07-09 20:24:36 +0000 |
---|---|---|
committer | yuzu <yuzu@b9215c17-b818-4693-b096-d1e41a411fef> | 2025-07-09 20:24:36 +0000 |
commit | bc0fac1bf2a02c9a76c8c4b9eccc9235de4e86b2 (patch) | |
tree | aa8bd79bacddd6830453e8a8beb5ea976155c5fe /src/smd/endpoints.rs | |
parent | b2cf95ed207e42d1f57de1e5b5030af8c734103b (diff) | |
download | salaryman-bc0fac1bf2a02c9a76c8c4b9eccc9235de4e86b2.tar.gz salaryman-bc0fac1bf2a02c9a76c8c4b9eccc9235de4e86b2.tar.bz2 salaryman-bc0fac1bf2a02c9a76c8c4b9eccc9235de4e86b2.zip |
working network communication
git-svn-id: svn+ssh://diminuette.aengel.lesbianunix.dev/salaryman/trunk@13 b9215c17-b818-4693-b096-d1e41a411fef
Diffstat (limited to 'src/smd/endpoints.rs')
-rw-r--r-- | src/smd/endpoints.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/smd/endpoints.rs b/src/smd/endpoints.rs index 8b13789..48c9720 100644 --- a/src/smd/endpoints.rs +++ b/src/smd/endpoints.rs @@ -1 +1,37 @@ +use super::{ + Config, + context::{SalarymanDContext, StdinBuffer}, +}; +use dropshot::{HttpError, HttpResponseOk, RequestContext, TypedBody, endpoint}; +use std::sync::Arc; +#[endpoint { + method = GET, + path = "/config", +}] +pub async fn endpoint_get_config( + rqctx: RequestContext<Arc<SalarymanDContext>>, +) -> Result<HttpResponseOk<Config>, HttpError> { + Ok(HttpResponseOk(rqctx.context().config.clone())) +} + +#[endpoint { + method = PUT, + path = "/services/write" +}] +pub async fn endpoint_post_stdin( + rqctx: RequestContext<Arc<SalarymanDContext>>, + update: TypedBody<StdinBuffer>, +) -> Result<HttpResponseOk<()>, HttpError> { + let ctx = rqctx.context(); + let stdin_str = update.into_inner(); + for i in 0..ctx.service.len() { + let mut lock = ctx.service[i].lock().await; + if lock.started().await { + lock.writeln_stdin(stdin_str.string.clone()).await.unwrap(); //TODO: PROPERLY HANDLE ERROR! + } + drop(lock); + } + + Ok(HttpResponseOk(())) +} |