ios设备的NkAgent断线重连优化
parent
8734b94843
commit
b39d6c4b64
|
@ -1,5 +1,6 @@
|
||||||
package net.northking.cctp.upperComputer.deviceManager.thread;
|
package net.northking.cctp.upperComputer.deviceManager.thread;
|
||||||
|
|
||||||
|
import net.northking.cctp.upperComputer.deviceManager.IOSDeviceManager;
|
||||||
import net.northking.cctp.upperComputer.driver.ios.NKAgent;
|
import net.northking.cctp.upperComputer.driver.ios.NKAgent;
|
||||||
import net.northking.cctp.upperComputer.driver.usbmuxd.AppleDevice;
|
import net.northking.cctp.upperComputer.driver.usbmuxd.AppleDevice;
|
||||||
import net.northking.cctp.upperComputer.entity.PhoneEntity;
|
import net.northking.cctp.upperComputer.entity.PhoneEntity;
|
||||||
|
@ -35,33 +36,39 @@ public abstract class IosDeviceInitThread extends Thread {
|
||||||
protected void createNKAgent() {
|
protected void createNKAgent() {
|
||||||
nkAgent = new NKAgent(this.appleDevice);
|
nkAgent = new NKAgent(this.appleDevice);
|
||||||
boolean nkAgentReady = false;
|
boolean nkAgentReady = false;
|
||||||
int retryTime = 1;
|
int reTryTime = 1;
|
||||||
while (!nkAgentReady && retryTime <= 5) {
|
do {
|
||||||
logger.debug("尝试第{}次连接设备【{}】的nkAgent",retryTime,phone.getUdid());
|
logger.debug("尝试第{}次连接设备【{}】的nkAgent", reTryTime, phone.getUdid());
|
||||||
try {
|
try {
|
||||||
nkAgent.connect();
|
nkAgent.connect();
|
||||||
nkAgentReady = true;
|
nkAgentReady = nkAgent.getStatus();
|
||||||
nkAgent.setOnDisconnectListener(()->{
|
logger.debug("设备【{}】的nkAgent连接完成,结果:{}", phone.getUdid(),nkAgentReady);
|
||||||
logger.warn("设备【{}】的nkAgent失效了,需要重新创建...........",phone.getUdid());
|
if (nkAgentReady) {
|
||||||
createNKAgent();
|
logger.debug("设置设备【{}】的帧数为:{}", phone.getUdid(), 25);
|
||||||
});
|
nkAgent.setMJPEGServerRate(25);
|
||||||
logger.debug("设备【{}】的nkAgent连接成功",phone.getUdid());
|
} else {
|
||||||
logger.debug("设备【{}】的帧数",phone.getUdid());
|
logger.error("第{}次连接设备【{}】的agent不成功,等待下一次......",reTryTime, phone.getUdid());
|
||||||
nkAgent.setMJPEGServerRate(60);
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.error("无法连接设备【{}】的agent",phone.getUdid(),e);
|
logger.error("第{}次连接设备【{}】的agent出错",reTryTime, phone.getUdid(), e);
|
||||||
try {
|
try {
|
||||||
Thread.sleep(3000);
|
Thread.sleep(3000);
|
||||||
} catch (InterruptedException ex) {
|
} catch (InterruptedException ex) {
|
||||||
ex.printStackTrace();
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
retryTime++;
|
reTryTime++;
|
||||||
}
|
} while (!nkAgentReady && reTryTime <= 5);
|
||||||
if (!nkAgentReady) {
|
if (!nkAgentReady) {
|
||||||
throw new ExecuteException(String.format("无法创建设备【%s】nkAgent", phone.getUdid()));
|
throw new ExecuteException(String.format("无法创建设备【%s】nkAgent", phone.getUdid()));
|
||||||
}
|
}
|
||||||
|
logger.debug("设置设备【{}】的nkAgent掉线之后的监听器................", phone.getUdid());
|
||||||
|
nkAgent.setOnDisconnectListener(() -> {
|
||||||
|
logger.warn("设备【{}】的nkAgent失效了,需要重新创建...........", phone.getUdid());
|
||||||
|
IOSDeviceManager.getInstance().getIosInitThread(phone.getUdid()).createNKAgent();
|
||||||
|
logger.warn("设备【{}】的nkAgent重新创建完成...........", phone.getUdid());
|
||||||
|
});
|
||||||
|
logger.debug("设备【{}】的nkAgent连接完毕................", phone.getUdid());
|
||||||
}
|
}
|
||||||
|
|
||||||
public NKAgent getNkAgent() {
|
public NKAgent getNkAgent() {
|
||||||
|
|
|
@ -10,12 +10,16 @@ import net.northking.cctp.upperComputer.driver.ios.command.listener.ScreenInfoDa
|
||||||
import net.northking.cctp.upperComputer.driver.ios.packet.*;
|
import net.northking.cctp.upperComputer.driver.ios.packet.*;
|
||||||
import net.northking.cctp.upperComputer.driver.usbmuxd.AppleDevice;
|
import net.northking.cctp.upperComputer.driver.usbmuxd.AppleDevice;
|
||||||
import net.northking.cctp.upperComputer.driver.usbmuxd.UsbMuxd;
|
import net.northking.cctp.upperComputer.driver.usbmuxd.UsbMuxd;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public final class NKAgent {
|
public final class NKAgent {
|
||||||
|
|
||||||
|
private final static Logger logger = LoggerFactory.getLogger(NKAgent.class);
|
||||||
|
|
||||||
public static final int PORT = 50001;
|
public static final int PORT = 50001;
|
||||||
|
|
||||||
private final DeviceSocketProvider deviceSocketProvider;
|
private final DeviceSocketProvider deviceSocketProvider;
|
||||||
|
@ -44,9 +48,10 @@ public final class NKAgent {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void connect() throws IOException {
|
public void connect() throws IOException {
|
||||||
System.out.println("NKAgent connect");
|
logger.debug("开始连接设备【{}】的nkAgent........",getUUID());
|
||||||
initTransfer();
|
initTransfer();
|
||||||
initAsyncListener();
|
initAsyncListener();
|
||||||
|
logger.debug("设备【{}】连接结果:{}........",getUUID(),packetTransfer.isConnected());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -208,6 +213,10 @@ public final class NKAgent {
|
||||||
packet.fillICommandData(bool);
|
packet.fillICommandData(bool);
|
||||||
return bool.isSuccess();
|
return bool.isSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getStatus() {
|
||||||
|
return this.packetTransfer.isConnected();
|
||||||
|
}
|
||||||
//
|
//
|
||||||
// public boolean clickUiNode(SearchUiNodeData.SearchChain chain) {
|
// public boolean clickUiNode(SearchUiNodeData.SearchChain chain) {
|
||||||
// return clickUiNode(chain.toSearchString(null));
|
// return clickUiNode(chain.toSearchString(null));
|
||||||
|
|
|
@ -138,7 +138,7 @@ public class PacketTransfer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICommandPacket syncSend(ICommandPacket sendPacket) {
|
public ICommandPacket syncSend(ICommandPacket sendPacket) {
|
||||||
logger.debug("connected = " + connected);
|
logger.debug("设备的nkAgent连接状态:connected = " + connected);
|
||||||
if (!connected) return null;
|
if (!connected) return null;
|
||||||
SendTarget sendTarget = new SendTarget(sendPacket, false);
|
SendTarget sendTarget = new SendTarget(sendPacket, false);
|
||||||
sendQueue.offer(sendTarget);
|
sendQueue.offer(sendTarget);
|
||||||
|
|
Loading…
Reference in New Issue