提交 d5e80fe9 authored 作者: Serhij S's avatar Serhij S

examples take_while fmt

上级 8f995879
...@@ -39,7 +39,7 @@ impl Worker<Message, Variables> for Worker1 { ...@@ -39,7 +39,7 @@ impl Worker<Message, Variables> for Worker1 {
let mut temp = 25; let mut temp = 25;
let oid: Arc<OID> = "unit:tests/fan".parse::<OID>().unwrap().into(); let oid: Arc<OID> = "unit:tests/fan".parse::<OID>().unwrap().into();
let dobj_name: Arc<String> = "Env".to_owned().into(); let dobj_name: Arc<String> = "Env".to_owned().into();
for _ in interval(Duration::from_millis(200)) { for _ in interval(Duration::from_millis(200)).take_while(|_| context.is_online()) {
if temp == 25 { if temp == 25 {
temp = 10; temp = 10;
} else { } else {
...@@ -59,9 +59,6 @@ impl Worker<Message, Variables> for Worker1 { ...@@ -59,9 +59,6 @@ impl Worker<Message, Variables> for Worker1 {
u8::from(context.variables().fan.load(Ordering::Acquire)), u8::from(context.variables().fan.load(Ordering::Acquire)),
)?; )?;
//self.eapi.dobj_error(dobj_name.clone())?; //self.eapi.dobj_error(dobj_name.clone())?;
if !context.is_online() {
break;
}
} }
Ok(()) Ok(())
} }
......
...@@ -66,7 +66,7 @@ impl Worker<Message, Variables> for ModbusPuller1 { ...@@ -66,7 +66,7 @@ impl Worker<Message, Variables> for ModbusPuller1 {
fn run(&mut self, context: &Context<Message, Variables>) -> WResult { fn run(&mut self, context: &Context<Message, Variables>) -> WResult {
// this worker does not need to be subscribed to any events // this worker does not need to be subscribed to any events
let hub = context.hub(); let hub = context.hub();
for _ in interval(Duration::from_millis(500)) { for _ in interval(Duration::from_millis(500)).take_while(|_| context.is_online()) {
match self.sensor_mapping.read::<EnvironmentSensors>() { match self.sensor_mapping.read::<EnvironmentSensors>() {
Ok(v) => { Ok(v) => {
context.variables().lock().temperature = v.temperature; context.variables().lock().temperature = v.temperature;
...@@ -79,9 +79,6 @@ impl Worker<Message, Variables> for ModbusPuller1 { ...@@ -79,9 +79,6 @@ impl Worker<Message, Variables> for ModbusPuller1 {
error!(worker=self.worker_name(), err=%e, "Modbus pull error"); error!(worker=self.worker_name(), err=%e, "Modbus pull error");
} }
} }
if !context.is_online() {
break;
}
} }
Ok(()) Ok(())
} }
......
...@@ -60,7 +60,7 @@ struct Worker1 { ...@@ -60,7 +60,7 @@ struct Worker1 {
#[allow(clippy::cast_lossless)] #[allow(clippy::cast_lossless)]
impl Worker<Message, Variables> for Worker1 { impl Worker<Message, Variables> for Worker1 {
fn run(&mut self, context: &Context<Message, Variables>) -> WResult { fn run(&mut self, context: &Context<Message, Variables>) -> WResult {
for _ in interval(Duration::from_secs(2)) { for _ in interval(Duration::from_secs(2)).take_while(|_| context.is_online()) {
let mut vars = context.variables().lock(); let mut vars = context.variables().lock();
vars.data.counter += 1; vars.data.counter += 1;
vars.relays.relay1 = u8::from(vars.data.counter % 2 == 0); vars.relays.relay1 = u8::from(vars.data.counter % 2 == 0);
...@@ -72,9 +72,6 @@ impl Worker<Message, Variables> for Worker1 { ...@@ -72,9 +72,6 @@ impl Worker<Message, Variables> for Worker1 {
info!(%vars.relays.relay1, "c0(1)"); info!(%vars.relays.relay1, "c0(1)");
info!(%vars.relays.relay2, "c1(1)"); info!(%vars.relays.relay2, "c1(1)");
info!(%vars.input.value, "h0(2)"); info!(%vars.input.value, "h0(2)");
if !context.is_online() {
break;
}
} }
Ok(()) Ok(())
} }
......
...@@ -58,7 +58,7 @@ struct UdpOut {} ...@@ -58,7 +58,7 @@ struct UdpOut {}
impl Worker<Message, ()> for UdpOut { impl Worker<Message, ()> for UdpOut {
fn run(&mut self, context: &Context<Message, ()>) -> WResult { fn run(&mut self, context: &Context<Message, ()>) -> WResult {
let mut tx = UdpSender::connect("localhost:25000")?; let mut tx = UdpSender::connect("localhost:25000")?;
for _ in interval(Duration::from_secs(1)) { for _ in interval(Duration::from_secs(1)).take_while(|_| context.is_online()) {
let data = EnvData { let data = EnvData {
temp: 25.0, temp: 25.0,
hum: 50.0, hum: 50.0,
...@@ -68,9 +68,6 @@ impl Worker<Message, ()> for UdpOut { ...@@ -68,9 +68,6 @@ impl Worker<Message, ()> for UdpOut {
if let Err(e) = tx.send(&data) { if let Err(e) = tx.send(&data) {
error!(worker=self.worker_name(), error=%e, "udp send error"); error!(worker=self.worker_name(), error=%e, "udp send error");
} }
if !context.is_online() {
break;
}
} }
Ok(()) Ok(())
} }
......
...@@ -64,12 +64,9 @@ struct DataGenerator {} ...@@ -64,12 +64,9 @@ struct DataGenerator {}
impl Worker<Message, ()> for DataGenerator { impl Worker<Message, ()> for DataGenerator {
fn run(&mut self, context: &Context<Message, ()>) -> WResult { fn run(&mut self, context: &Context<Message, ()>) -> WResult {
for _ in interval(Duration::from_secs(1)) { for _ in interval(Duration::from_secs(1)).take_while(|_| context.is_online()) {
context.hub().send(Message::Data(42)); context.hub().send(Message::Data(42));
// This worker terminates itself when the controller goes to the stopping state // This worker terminates itself when the controller goes to the stopping state
if !context.is_online() {
break;
}
} }
Ok(()) Ok(())
} }
......
...@@ -60,12 +60,9 @@ struct DataGenerator {} ...@@ -60,12 +60,9 @@ struct DataGenerator {}
impl Worker<Message, ()> for DataGenerator { impl Worker<Message, ()> for DataGenerator {
fn run(&mut self, context: &Context<Message, ()>) -> WResult { fn run(&mut self, context: &Context<Message, ()>) -> WResult {
for _ in interval(Duration::from_secs(1)) { for _ in interval(Duration::from_secs(1)).take_while(|_| context.is_online()) {
context.hub().send(Message::Data(42)); context.hub().send(Message::Data(42));
// This worker terminates itself when the controller goes to the stopping state // This worker terminates itself when the controller goes to the stopping state
if !context.is_online() {
break;
}
} }
Ok(()) Ok(())
} }
......
...@@ -8,7 +8,7 @@ use core::fmt; ...@@ -8,7 +8,7 @@ use core::fmt;
/// Example: /// Example:
/// ///
/// ```rust,no_run /// ```rust,no_run
/// use roboplc::thread_rt::SystemConfig; /// use roboplc::system::SystemConfig;
/// ///
/// let _sys = SystemConfig::new().set("kernel/sched_rt_runtime_us", -1) /// let _sys = SystemConfig::new().set("kernel/sched_rt_runtime_us", -1)
/// .apply() /// .apply()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论