提交 5e6638eb authored 作者: Serhij S's avatar Serhij S

rflow serve

上级 5bb755c1
...@@ -533,7 +533,7 @@ dependencies = [ ...@@ -533,7 +533,7 @@ dependencies = [
[[package]] [[package]]
name = "roboplc-cli" name = "roboplc-cli"
version = "0.1.21" version = "0.1.22"
dependencies = [ dependencies = [
"ansi_term", "ansi_term",
"clap", "clap",
......
...@@ -67,6 +67,7 @@ fn add_dependency(name: &str, features: &[&str]) -> Result<(), Box<dyn std::erro ...@@ -67,6 +67,7 @@ fn add_dependency(name: &str, features: &[&str]) -> Result<(), Box<dyn std::erro
#[allow(clippy::let_and_return)] #[allow(clippy::let_and_return)]
fn prepare_main(tpl: &str, features: &[&str]) -> String { fn prepare_main(tpl: &str, features: &[&str]) -> String {
/// METRICS
let mut out = if features.contains(&"metrics") { let mut out = if features.contains(&"metrics") {
tpl.replace( tpl.replace(
" // METRICS", " // METRICS",
...@@ -77,6 +78,7 @@ fn prepare_main(tpl: &str, features: &[&str]) -> String { ...@@ -77,6 +78,7 @@ fn prepare_main(tpl: &str, features: &[&str]) -> String {
} else { } else {
tpl.replace(" // METRICS\n", "") tpl.replace(" // METRICS\n", "")
}; };
/// RVIDEO
out = if features.contains(&"rvideo") { out = if features.contains(&"rvideo") {
out.replace( out.replace(
"// RVIDEO-SERVE", "// RVIDEO-SERVE",
...@@ -99,5 +101,28 @@ impl Worker<Message, Variables> for RvideoSrv { ...@@ -99,5 +101,28 @@ impl Worker<Message, Variables> for RvideoSrv {
out.replace("// RVIDEO-SERVE\n", "") out.replace("// RVIDEO-SERVE\n", "")
.replace(" // RVIDEO-SPAWN\n", "") .replace(" // RVIDEO-SPAWN\n", "")
}; };
// RFLOW
out = if features.contains(&"rflow") {
out.replace(
"// RFLOW-SERVE",
r#"#[derive(WorkerOpts)]
#[worker_opts(cpu = 0, priority = 50, scheduling = "fifo", blocking = true)]
struct RflowSrv {}
impl Worker<Message, Variables> for RvideoSrv {
fn run(&mut self, _context: &Context<Message, Variables>) -> WResult {
roboplc::serve_rflow().map_err(Into::into)
}
}
"#,
)
.replace(
" // RFLOW-SPAWN",
" controller.spawn_worker(RflowSrv {})?;",
)
} else {
out.replace("// RFLOW-SERVE\n", "")
.replace(" // RFLOW-SPAWN\n", "")
};
out out
} }
...@@ -19,6 +19,7 @@ impl Worker<Message, Variables> for Worker1 { ...@@ -19,6 +19,7 @@ impl Worker<Message, Variables> for Worker1 {
} }
// RVIDEO-SERVE // RVIDEO-SERVE
// RFLOW-SERVE
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
roboplc::setup_panic(); roboplc::setup_panic();
roboplc::configure_logger(roboplc::LevelFilter::Info); roboplc::configure_logger(roboplc::LevelFilter::Info);
...@@ -29,6 +30,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { ...@@ -29,6 +30,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
// METRICS // METRICS
let mut controller = Controller::<Message, Variables>::new(); let mut controller = Controller::<Message, Variables>::new();
// RVIDEO-SPAWN // RVIDEO-SPAWN
// RFLOW-SPAWN
controller.spawn_worker(Worker1 {})?; controller.spawn_worker(Worker1 {})?;
controller.register_signals(SHUTDOWN_TIMEOUT)?; controller.register_signals(SHUTDOWN_TIMEOUT)?;
controller.block(); controller.block();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论