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