debug-server-next
Version:
Dev server for hippy-core.
67 lines (66 loc) • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deviceManager = void 0;
const tslib_1 = require("tslib");
const log_1 = require("@/utils/log");
const db_1 = require("@/db");
const debug_target_1 = require("@/utils/debug-target");
const config_1 = require("@/config");
const app_client_manager_1 = require("@/client/app-client-manager");
const pub_sub_manager_1 = require("@/controller/pub-sub-manager");
const log = new log_1.Logger('device-manager');
class DeviceManager {
constructor() {
this.deviceList = [];
}
/**
* app 断连,清理调试对象
*/
onAppDisconnect() {
const device = this.deviceList[0];
if (!device)
return;
// 通过 tunnel 通道创建的 debugTarget 的 clientId 为 devicename
pub_sub_manager_1.cleanDebugTarget(device.devicename);
}
/**
* app 连接,添加调试对象,并订阅上行调试指令
*/
onAppConnect() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const device = this.deviceList[0];
if (!device)
return;
const useTunnel = app_client_manager_1.appClientManager.shouldUseAppClientType(device.platform, "TunnelAppClient" /* Tunnel */);
if (device.physicalstatus === "1" /* Connected */ && useTunnel) {
let debugTarget = debug_target_1.createTargetByDeviceInfo(device);
debugTarget = yield debug_target_1.patchDebugTarget(debugTarget);
const { model } = db_1.getDBOperator();
model.upsert(config_1.config.redis.key, debugTarget.clientId, debugTarget);
pub_sub_manager_1.subscribeCommand(debugTarget);
}
});
}
/**
* 查询 USB 连接的设备列表
*/
getDeviceList() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
global.addon.getDeviceList((devices) => {
log.info('getDeviceList: %j', devices);
this.deviceList = devices;
if (devices.length) {
const isDeviceDisconnect = devices[0].physicalstatus === "2" /* Disconnected */;
if (isDeviceDisconnect)
return;
// 目前暂不支持多设备连接,所以默认选择第一个设备
const device = this.deviceList[0];
const deviceId = device.deviceid;
log.info(`selectDevice ${deviceId}`);
global.addon.selectDevice(deviceId);
}
});
});
}
}
exports.deviceManager = new DeviceManager();