Skip to content

Commit 308a916

Browse files
committed
支持 KeepAlive,TaskReady 改为 onTaskReady,优化内部 clearQueue 逻辑
1 parent a1dad3e commit 308a916

File tree

9 files changed

+64
-49
lines changed

9 files changed

+64
-49
lines changed

demo/config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ var config = {
55
Region: 'ap-guangzhou'
66
};
77

8-
module.exports = config;
8+
module.exports = config;

demo/demo-sts.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ var policy = {
1313
'version': '2.0',
1414
'statement': [{
1515
'action': [
16+
// 所有 action 请看文档 https://cloud.tencent.com/document/product/436/31923
17+
// 简单上传
1618
'name/cos:PutObject',
19+
'name/cos:PostObject',
20+
// 分片上传
1721
'name/cos:InitiateMultipartUpload',
1822
'name/cos:ListMultipartUploads',
1923
'name/cos:ListParts',
@@ -45,7 +49,6 @@ var cos = new COS({
4549
TmpSecretId: credentials.tmpSecretId,
4650
TmpSecretKey: credentials.tmpSecretKey,
4751
XCosSecurityToken: credentials.sessionToken,
48-
StartTime: data.starteTime,
4952
ExpiredTime: data.expiredTime,
5053
});
5154
}
@@ -60,4 +63,4 @@ cos.putObject({
6063
Body: 'hello!',
6164
}, function (err, data) {
6265
console.log(err || data);
63-
});
66+
});

demo/demo.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ function putObject() {
459459
Bucket: config.Bucket, /* 必须 */ // Bucket 格式:test-1250000000
460460
Region: config.Region,
461461
Key: filename, /* 必须 */
462-
TaskReady: function (tid) {
462+
onTaskReady: function (tid) {
463463
TaskId = tid;
464464
},
465465
onProgress: function (progressData) {
@@ -642,7 +642,7 @@ function sliceUploadFile() {
642642
Region: config.Region,
643643
Key: filename, /* 必须 */
644644
FilePath: filepath, /* 必须 */
645-
TaskReady: function (tid) {
645+
onTaskReady: function (tid) {
646646
TaskId = tid;
647647
},
648648
onHashProgress: function (progressData) {
@@ -780,4 +780,4 @@ getService();
780780
// pauseTask();
781781
// restartTask();
782782
// uploadFiles();
783-
// sliceCopyFile();
783+
// sliceCopyFile();

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cos-nodejs-sdk-v5",
3-
"version": "2.5.7",
3+
"version": "2.5.8",
44
"description": "cos nodejs sdk v5",
55
"main": "index.js",
66
"scripts": {

sdk/advance.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -917,12 +917,12 @@ function uploadFiles(params, callback) {
917917
});
918918

919919
// 处理单个文件 TaskReady
920-
var _TaskReady = fileParams.TaskReady;
921-
var TaskReady = function (tid) {
920+
var _onTaskReady = fileParams.onTaskReady;
921+
var onTaskReady = function (tid) {
922922
fileInfo.TaskId = tid;
923-
_TaskReady && _TaskReady(tid);
923+
_onTaskReady && _onTaskReady(tid);
924924
};
925-
fileParams.TaskReady = TaskReady;
925+
fileParams.onTaskReady = onTaskReady;
926926

927927
// 处理单个文件进度
928928
var PreAddSize = 0;

sdk/base.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2426,6 +2426,9 @@ function _submitRequest(params, callback) {
24262426
if (this.options.Timeout) {
24272427
opt.timeout = this.options.Timeout;
24282428
}
2429+
if (this.options.KeepAlive) {
2430+
opt.forever = true;
2431+
}
24292432

24302433
self.emit('before-send', opt);
24312434
var sender = REQUEST(opt);

sdk/cos.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ var defaultOptions = {
3737
Proxy: '',
3838
Ip: '',
3939
StrictSsl: true,
40+
KeepAlive: true,
4041
UserAgent: '',
4142
};
4243

sdk/task.js

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,21 +45,22 @@ var initTask = function (cos) {
4545
};
4646

4747
var clearQueue = function () {
48-
if (queue.length > cos.options.UploadQueueSize) {
49-
var i;
50-
for (i = 0;
51-
i < queue.length &&
52-
queue.length > cos.options.UploadQueueSize && // 大于队列才处理
53-
i < nextUploadIndex; // 小于当前操作的 index 才处理
54-
i++) {
55-
var isActive = queue[i].state === 'waiting' || queue[i].state === 'checking' || queue[i].state === 'uploading';
56-
if (!queue[i] || !isActive) {
57-
tasks[queue[i].id] && (delete tasks[queue[i].id]);
58-
queue.splice(i, 1);
59-
nextUploadIndex--;
60-
}
48+
if (queue.length <= cos.options.UploadQueueSize) return;
49+
for (var i = 0;
50+
i < nextUploadIndex && // 小于当前操作的 index 才清理
51+
i < queue.length && // 大于队列才清理
52+
queue.length > cos.options.UploadQueueSize // 如果还太多,才继续清理
53+
;) {
54+
var isActive = queue[i].state === 'waiting' || queue[i].state === 'checking' || queue[i].state === 'uploading';
55+
if (!queue[i] || !isActive) {
56+
tasks[queue[i].id] && (delete tasks[queue[i].id]);
57+
queue.splice(i, 1);
58+
nextUploadIndex--;
59+
} else {
60+
i++;
6161
}
6262
}
63+
emitListUpdate();
6364
};
6465

6566
var startNextTask = function () {
@@ -70,6 +71,7 @@ var initTask = function (cos) {
7071
if (task.state === 'waiting') {
7172
uploadingFileCount++;
7273
task.state = 'checking';
74+
task.params.onTaskStart && task.params.onTaskStart(formatTask(task));
7375
!task.params.UploadData && (task.params.UploadData = {});
7476
var apiParams = util.formatParams(task.api, task.params);
7577
originApiMap[task.api].call(cos, apiParams, function (err, data) {
@@ -112,7 +114,7 @@ var initTask = function (cos) {
112114
}
113115
task.state = switchToState;
114116
cos.emit('inner-kill-task', {TaskId: id, toState: switchToState});
115-
emitListUpdate();
117+
emitListUpdate(true);
116118
if (running) {
117119
uploadingFileCount--;
118120
startNextTask(cos);
@@ -133,9 +135,10 @@ var initTask = function (cos) {
133135
util.each(taskList, function (task) {
134136
cos._addTask(task.api, task.params, task.callback, true);
135137
});
136-
emitListUpdate();
138+
emitListUpdate(true);
137139
};
138140

141+
var isTaskReadyWarning = true;
139142
cos._addTask = function (api, params, callback, ignoreAddEvent) {
140143

141144
// 复制参数对象
@@ -144,7 +147,12 @@ var initTask = function (cos) {
144147
// 生成 id
145148
var id = util.uuid();
146149
params.TaskId = id;
147-
params.TaskReady && params.TaskReady(id);
150+
params.onTaskReady && params.onTaskReady(id);
151+
if (params.TaskReady) {
152+
params.TaskReady(id);
153+
isTaskReadyWarning && console.warn('warning: Param "TaskReady" has been deprecated. Please use "onTaskReady" instead.');
154+
isTaskReadyWarning = false;
155+
}
148156

149157
var task = {
150158
// env
@@ -209,10 +217,10 @@ var initTask = function (cos) {
209217
return util.map(queue, formatTask);
210218
};
211219
cos.cancelTask = function (id) {
212-
killTask(id, 'canceled')
220+
killTask(id, 'canceled');
213221
};
214222
cos.pauseTask = function (id) {
215-
killTask(id, 'paused')
223+
killTask(id, 'paused');
216224
};
217225
cos.restartTask = function (id) {
218226
var task = tasks[id];

test/test.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ group('putObject(),cancelTask()', function () {
271271
Region: config.Region,
272272
Key: filename,
273273
Body: Buffer.from(Array(1024 * 1024 * 10).fill(0)),
274-
TaskReady: function (taskId) {
274+
onTaskReady: function (taskId) {
275275
TaskId = taskId;
276276
},
277277
onProgress: function (info) {
@@ -309,7 +309,7 @@ group('sliceUploadFile() 完整上传文件', function () {
309309
Region: config.Region,
310310
Key: filename,
311311
FilePath: filePath,
312-
TaskReady: function (taskId) {
312+
onTaskReady: function (taskId) {
313313
TaskId = taskId;
314314
},
315315
onProgress: function (info) {
@@ -349,7 +349,7 @@ group('sliceUploadFile(),pauseTask(),restartTask()', function () {
349349
Region: config.Region,
350350
Key: filename,
351351
FilePath: filePath,
352-
TaskReady: function (taskId) {
352+
onTaskReady: function (taskId) {
353353
TaskId = taskId;
354354
},
355355
onProgress: function (info) {
@@ -386,7 +386,7 @@ group('sliceUploadFile(),cancelTask()', function () {
386386
Region: config.Region,
387387
Key: filename,
388388
FilePath: filePath,
389-
TaskReady: function (taskId) {
389+
onTaskReady: function (taskId) {
390390
TaskId = taskId;
391391
},
392392
onProgress: function (info) {
@@ -443,7 +443,7 @@ group('abortUploadTask()', function () {
443443
Region: config.Region,
444444
Key: filename,
445445
FilePath: filePath,
446-
TaskReady: function (taskId) {
446+
onTaskReady: function (taskId) {
447447
TaskId = taskId;
448448
},
449449
onProgress: function (info) {
@@ -470,7 +470,7 @@ group('abortUploadTask()', function () {
470470
Region: config.Region,
471471
Key: filename,
472472
FilePath: filePath,
473-
TaskReady: function (taskId) {
473+
onTaskReady: function (taskId) {
474474
TaskId = taskId;
475475
},
476476
onProgress: function (info) {
@@ -1244,20 +1244,20 @@ group('ObjectAcl', function () {
12441244
});
12451245
});
12461246
});
1247-
test('putObjectAcl() header ACL:public-read-write', function (done, assert) {
1248-
cos.putObjectAcl({
1249-
Bucket: config.Bucket,
1250-
Region: config.Region,
1251-
ACL: 'public-read-write',
1252-
Key: '1.txt',
1253-
}, function (err, data) {
1254-
assert.ok(!err, 'putObjectAcl 成功');
1255-
cos.getObjectAcl({Bucket: config.Bucket, Region: config.Region, Key: '1.txt'}, function (err, data) {
1256-
assert.ok(data.ACL = 'public-read-write');
1257-
done();
1258-
});
1259-
});
1260-
});
1247+
// test('putObjectAcl() header ACL:public-read-write', function (done, assert) {
1248+
// cos.putObjectAcl({
1249+
// Bucket: config.Bucket,
1250+
// Region: config.Region,
1251+
// ACL: 'public-read-write',
1252+
// Key: '1.txt',
1253+
// }, function (err, data) {
1254+
// assert.ok(!err, 'putObjectAcl 成功');
1255+
// cos.getObjectAcl({Bucket: config.Bucket, Region: config.Region, Key: '1.txt'}, function (err, data) {
1256+
// assert.ok(data.ACL = 'public-read-write');
1257+
// done();
1258+
// });
1259+
// });
1260+
// });
12611261
test('putObjectAcl() header GrantRead:1001,1002', function (done, assert) {
12621262
var GrantRead = 'id="qcs::cam::uin/1001:uin/1001",id="qcs::cam::uin/1002:uin/1002"';
12631263
cos.putObjectAcl({

0 commit comments

Comments
 (0)