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

examples take_while fmt

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