/** * 去查询所有的server的状态 * * @param m2mWebPacket * @param channel * @throws IOException */ public void lookAllServerStatus(M2mWebPacket m2mWebPacket, ChannelHandlerContext ctx) throws IOException { M2mServerStatusDOs m2mServerStatuses = new M2mServerStatusDOs(); final ConcurrentHashMap<Long, String> survivalServers = networkPool.getPositionToServer(); List<M2mServerStatusDO> m2mServerStatusDOs = new ArrayList<>(); List<String> serverStrings = survivalServers .entrySet() .stream() .map( entry -> { M2mServerStatusDO m2mServerStatusDO = new M2mServerStatusDO(); m2mServerStatusDO.setId(entry.getKey()); m2mServerStatusDO.setIp(entry.getValue()); m2mServerStatusDO.setStatus(M2mServerStatus.STARTED.getStatus()); m2mServerStatusDOs.add(m2mServerStatusDO); return entry.getValue(); }) .collect(Collectors.toList()); serverCnxnFactory .getAllServer() .entrySet() .stream() .filter(entry -> (!serverStrings.contains(entry.getKey()))) .map( entry -> { M2mServerStatusDO m2mServerStatusDO = new M2mServerStatusDO(); m2mServerStatusDO.setId(entry.getValue()); m2mServerStatusDO.setIp(entry.getKey()); m2mServerStatusDO.setStatus(M2mServerStatus.STOPED.getStatus()); m2mServerStatusDOs.add(m2mServerStatusDO); return entry.getKey(); }) .count(); m2mServerStatuses.setM2mServerStatusDOs(m2mServerStatusDOs); M2mWebServerStatusResponse m2mWebServerStatusResponse = new M2mWebServerStatusResponse(); M2mWebPacket m2mPacket = M2mWebPacketHandle.createM2mWebPacket( m2mWebPacket.getM2mRequestHeader(), m2mWebPacket.getM2mReplyHeader(), m2mWebPacket.getRequest(), m2mWebServerStatusResponse, m2mServerStatuses, "m2mWebServerStatuses"); ctx.writeAndFlush(m2mPacket); }