MCPcopy Index your code
hub / github.com/totaljs/framework / onFinished

Function onFinished

internal.js:3246–3310  ·  view source on GitHub ↗
(stream, fn)

Source from the content-addressed store, hash-verified

3244}
3245
3246function onFinished(stream, fn) {
3247
3248 if (stream.$onFinished) {
3249 fn && fn();
3250 fn = null;
3251 return;
3252 }
3253
3254 if (stream.$onFinishedQueue) {
3255 if (stream.$onFinishedQueue instanceof Array)
3256 stream.$onFinishedQueue.push(fn);
3257 else
3258 stream.$onFinishedQueue = [stream.$onFinishedQueue, fn];
3259 return;
3260 } else
3261 stream.$onFinishedQueue = fn;
3262
3263 var callback = function() {
3264 !stream.$onFinished && (stream.$onFinished = true);
3265 if (stream.$onFinishedQueue instanceof Array) {
3266 while (stream.$onFinishedQueue.length)
3267 stream.$onFinishedQueue.shift()();
3268 stream.$onFinishedQueue = null;
3269 } else if (stream.$onFinishedQueue) {
3270 stream.$onFinishedQueue();
3271 stream.$onFinishedQueue = null;
3272 }
3273 };
3274
3275 if (isFinished(stream)) {
3276 setImmediate(callback);
3277 } else {
3278
3279 if (stream.socket) {
3280 if (!stream.socket.$totalstream) {
3281 stream.socket.$totalstream = stream;
3282 if (stream.socket.prependListener) {
3283 stream.socket.prependListener('error', callback);
3284 stream.socket.prependListener('close', callback);
3285 } else {
3286 stream.socket.on('error', callback);
3287 stream.socket.on('close', callback);
3288 }
3289 }
3290 }
3291
3292 if (stream.prependListener) {
3293 stream.prependListener('error', callback);
3294 stream.prependListener('end', callback);
3295 stream.prependListener('close', callback);
3296 stream.prependListener('aborted', callback);
3297 stream.prependListener('finish', callback);
3298 } else {
3299 stream.on('error', callback);
3300 stream.on('end', callback);
3301 stream.on('close', callback);
3302 stream.on('aborted', callback);
3303 stream.on('finish', callback);

Callers 1

internal.jsFile · 0.85

Calls 2

isFinishedFunction · 0.85
fnFunction · 0.70

Tested by

no test coverage detected