package com.zy.acs.gateway.job; import com.zy.acs.gateway.cache.ChannelCache; import com.zy.acs.gateway.domain.AgvPackage; import com.zy.acs.gateway.domain.PackageSupport; import io.netty.channel.Channel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 任务处理器 * Created by vincent on 2019-04-03 */ public class PacTask implements Runnable { private static final Logger log = LoggerFactory.getLogger(PacTask.class); private final PackageSupport pac; PacTask(PackageSupport pac){ this.pac = pac; } @Override public void run() { assert pac != null; if (pac instanceof AgvPackage) { AgvPackage agvPackage = (AgvPackage) pac; String uniqueNo = agvPackage.getHeader().getUniqueNo(); Channel channel = ChannelCache.getChannel(uniqueNo); if (null == channel){ log.warn("AGV [{}] 设备不在线,下发指令 {} 失败" , uniqueNo , String.format("%02x", agvPackage.getHeader().getProtocolType().getCode()).toUpperCase() ); return; } channel.writeAndFlush(pac); } } }