类 MasterAsync

java.lang.Object
com.darra.ethercat.sugar.MasterAsync

public final class MasterAsync extends Object
Java 8+ CompletableFuture 异步语法糖.

主线 EtherCATMaster.setStateAsync(com.darra.ethercat.data.EcState) 已存在, 但功能单一. 本类把一组 阻塞 API (setNetwork, scan, configureDC, applyStartup) 都转成 CompletableFuture, 方便用 thenCompose / thenApply / whenComplete / orTimeout 组合.

底层用专用守护线程池 (默认 4 线程, 小于 ForkJoinPool.commonPool, 防止跟 Java 应用其他任务竞争). 所有线程 daemon=true, 进程退出不阻塞.

典型用法:

 // 1. 串行: 设网卡 -> 进 OP -> 启动 PDO
 MasterAsync.setNetworkAsync(master, primary, secondary)
     .thenCompose(ok -> MasterAsync.setStateAsync(master, EcState.OP, Duration.ofSeconds(15)))
     .thenAccept(ok -> System.out.println("OP=" + ok));

 // 2. 带超时
 boolean op = MasterAsync.setStateAsync(master, EcState.OP)
     .orTimeout(10, TimeUnit.SECONDS)
     .exceptionally(t -> false)
     .join();

 // 3. 并行扫描多张网卡
 CompletableFuture<Integer> a = MasterAsync.scanAsync(nicA);
 CompletableFuture<Integer> b = MasterAsync.scanAsync(nicB);
 CompletableFuture.allOf(a, b).thenRun(() ->
     System.out.printf("A=%d B=%d%n", a.join(), b.join()));
 
从以下版本开始:
2026-05