fix: 简化代码

This commit is contained in:
手瓜一十雪 2025-10-29 21:37:55 +08:00
parent 4ed61136b2
commit 458d22223c

View File

@ -64,42 +64,45 @@ export class NativePacketClient {
}
}
async sendPacket(cmd: string, data: PacketHexStr, rsp = false, timeout = 5000): Promise<RecvPacketData> {
async sendPacket(
cmd: string,
data: PacketHexStr,
rsp = false,
timeout = 5000
): Promise<RecvPacketData> {
if (!rsp) {
this.napcore.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex')).catch(err => {
this.logger.error(`[PacketClient] sendPacket 无响应命令发送失败 cmd=${cmd} err=${err}`);
});
return { seq: 0, cmd: cmd, data: Buffer.alloc(0) };
this.napcore
.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex'))
.catch(err =>
this.logger.error(
`[PacketClient] sendPacket 无响应命令发送失败 cmd=${cmd} err=${err}`
)
);
return { seq: 0, cmd, data: Buffer.alloc(0) };
}
const task = new CancelableTask<RecvPacketData>((resolve, reject, onCancel) => {
const timeoutId = setTimeout(() => {
reject(new Error(`[PacketClient] sendPacket 超时 cmd=${cmd} timeout=${timeout}ms`));
}, timeout);
const sendPromise = this.napcore
.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex'))
.then(ret => ({
seq: 0,
cmd,
data: (ret as { rspbuffer: Buffer }).rspbuffer
}));
onCancel(() => {
clearTimeout(timeoutId);
});
this.napcore.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex'))
.then(ret => {
clearTimeout(timeoutId);
const result = ret as { rspbuffer: Buffer };
resolve({
seq: 0,
cmd: cmd,
data: result.rspbuffer
});
})
.catch(err => {
clearTimeout(timeoutId);
reject(err);
});
const timeoutPromise = new Promise<RecvPacketData>((_, reject) => {
setTimeout(
() =>
reject(
new Error(
`[PacketClient] sendPacket 超时 cmd=${cmd} timeout=${timeout}ms`
)
),
timeout
);
});
return await task;
return Promise.race([sendPromise, timeoutPromise]);
}
async sendOidbPacket(pkt: OidbPacket, rsp = false, timeout = 5000): Promise<RecvPacketData> {
return await this.sendPacket(pkt.cmd, pkt.data, rsp, timeout);
}