Commit 0b8fa873 authored by martin hou's avatar martin hou

fix: 取消对current的使用和控制

parent f7dc839d
......@@ -273,7 +273,7 @@ function Jensen(log, conn) {
const sendNext = async function () {
if (current) {
// Logger.info('jensen', 'sendNext', 'return cuz current is: ' + current);
return;
// return;
}
let cmd = null;
......@@ -289,7 +289,7 @@ function Jensen(log, conn) {
}
let data = cmd.make();
current = 'cmd-' + cmd.command + '-' + cmd.index;
// current = 'cmd-' + cmd.command + '-' + cmd.index;
Logger.debug('jensen', 'sendNext', pid + '-command: ' + cmd.command + ', data bytes: ' + data.byteLength);
self.timewait = cmd.command == TRANSFER_FILE || cmd.command == GET_FILE_BLOCK ? 1000 : 10;
......@@ -348,22 +348,43 @@ function Jensen(log, conn) {
trigger(resp, msgid);
}
const trigger = function (resp, msgid) {
const trigger = function (resp, msgid, idx)
{
/*
if (current == null) return;
Logger.debug('jensen', 'trigger', pid + ':trigger - ' + current.substring(0, current.lastIndexOf('-')) + ' <---> cmd-' + (msgid || 'err'));
if (current.substring(0, current.lastIndexOf('-')) != 'cmd-' + msgid) {
// current = null;
return;
}
if (current in actions == false) {
Logger.debug('jensen', 'trigger', pid + ':no action registered');
return;
*/
if (idx)
{
let tag = 'cmd-' + msgid + '-' + idx;
if (tag in actions == false) {
Logger.debug('jensen', 'trigger', pid + ':no action registered');
return;
}
let p = actions[tag];
if (p.timeout) clearTimeout(p.timeout);
p.resolve(resp);
delete actions[tag];
}
else
{
// 触发所有的
let prefix = 'cmd-' + msgid + '-';
for (let x in actions)
{
let p = actions[x];
if (p.tag.startsWith(prefix))
{
p.resolve(null);
delete actions[p];
}
}
}
let p = actions[current];
if (p.timeout) clearTimeout(p.timeout);
p.resolve(resp);
delete actions[current];
current = null;
};
const timeout = function (tag) {
......@@ -423,7 +444,7 @@ function Jensen(log, conn) {
};
const tryDecode = function () {
if (!current) return;
// if (!current) return;
// 一个容器,比单独任意一个小包要大一点儿,好像还差一点儿
let stime = new Date();
let buff = new ArrayBuffer(RECV_BUFF_SIZE * 2);
......@@ -472,7 +493,7 @@ function Jensen(log, conn) {
let handler = handlers[msg.id];
if (!handler) handler = Jensen.handlers[msg.id];
let r = handler(msg, self);
if (r) trigger(r, msg.id);
if (r) trigger(r, msg.id, msg.sequence);
} catch (e) {
console.error(e);
trigger(e);
......@@ -484,6 +505,7 @@ function Jensen(log, conn) {
if (crash) {
// cmd-5-42
// 5是msgid
/*
let msgid = parseInt(current.replace(/^cmd-(\d+)-(\d+)$/gi, '$1'));
try {
let handler = handlers[msgid];
......@@ -495,6 +517,7 @@ function Jensen(log, conn) {
Logger.error('jensen', 'decode', 'decode error: ' + String(e));
}
trigger(null, msgid);
*/
blocks.length = 0;
break;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment