类 SlaveStateQueue

java.lang.Object
com.darra.ethercat.sugar.SlaveStateQueue
所有已实现的接口:
AutoCloseable

public final class SlaveStateQueue extends Object implements AutoCloseable
从站状态变化事件 -> BlockingQueueStream 适配器.

设计同 DiagnosticQueue, 但订阅的是 SlaveStateChanged 事件. 容量满默认丢弃最早事件 (不阻塞 PDO 线程).

典型用法 — 等待全网进入 OP:

 try (SlaveStateQueue q = SlaveStateQueue.attach(master, 256)) {
     master.setState(EcState.OP);
     long deadline = System.currentTimeMillis() + 30_000;
     while (System.currentTimeMillis() < deadline) {
         StateChangeEvent ev = q.poll(500, TimeUnit.MILLISECONDS);
         if (ev != null && ev.newState == EcState.OP) {
             if (allOp(master)) break;
         }
     }
 }
 

也支持把事件流导成 Stream, 用 Stream API 实时处理:

 q.streamUntilClosed()
     .filter(ev -> ev.newState == EcState.PRE_OP)
     .forEach(ev -> logger.warn("从站 {} 跌回 PreOp", ev.slaveIndex));
 
从以下版本开始:
2026-05