« index
Coverage for /Users/yunong/workspace/node-restify/lib/plugins/pre/pause.js : 57%
52 lines |
30 run |
22 missing |
0 partial |
8 blocks |
0 blocks run |
8 blocks missing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | // Copyright 2012 Mark Cavage, Inc. All rights reserved. ///--- Helpers function pauseStream(stream) { function _buffer(chunk) { stream.__buffered.push(chunk); } function _catchEnd(chunk) { stream.__rstfy_ended = true; } stream.__rstfy_ended = false; stream.__rstfy_paused = true; stream.__buffered = []; stream.on('data', _buffer); stream.once('end', _catchEnd); stream.pause(); stream._resume = stream.resume; stream.resume = function _rstfy_resume() { if (!stream.__rstfy_paused) return; stream.removeListener('data', _buffer); stream.removeListener('end', _catchEnd); stream.__buffered.forEach(stream.emit.bind(stream, 'data')); stream.__buffered.length = 0; stream._resume(); stream.resume = stream._resume; if (stream.__rstfy_ended) stream.emit('end'); }; } ///--- Exports module.exports = function pause() { function prePause(req, res, next) { pauseStream(req); next(); } return (prePause); }; |