UNPKG

gcl

Version:

码农村nodejs类库,完成解决回调陷阱,配置框架,IOC框架,统一多DB访问框架,可扩展日志框架和io/db/net/thread/pool 克隆表达式,加解密算法等等一系列基础类库和算法的实现

102 lines (80 loc) 3.59 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ArrayStream = undefined; var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _stream = require('stream'); var _stream2 = _interopRequireDefault(_stream); var _util = require('util'); var _tool = require('../common/tool'); var _tool2 = _interopRequireDefault(_tool); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * 内存流提供Stream写入与读取的一切方法,但是仅仅限于写入居多的toArray方法 */ var ArrayStream = exports.ArrayStream = function (_S$Duplex) { (0, _inherits3.default)(ArrayStream, _S$Duplex); function ArrayStream() { var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var buffer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1024 * 16; (0, _classCallCheck3.default)(this, ArrayStream); var _this = (0, _possibleConstructorReturn3.default)(this, (ArrayStream.__proto__ || (0, _getPrototypeOf2.default)(ArrayStream)).call(this, { allowHalfOpen: true, readableObjectMode: true, writableObjectMode: true, highWaterMark: buffer })); var _ = _this; _.max = size; _.buf = []; _.buffersize = buffer; return _this; } (0, _createClass3.default)(ArrayStream, [{ key: '_read', value: function _read(length) { var _ = this; if (_.buf.length) { // console.log('_read',length) _.push(Buffer.from(_.buf.splice(0, length ? length : _.buffersize))); } else _.push(null); } }, { key: '_write', value: function _write(chunk, encoding, callback) { var _ = this; var _buf = _.buf; _.buf = _buf.concat(chunk.toJSON ? chunk.toJSON().data : chunk); _buf = null; callback(_.max > 0 && _.buf.length > _.max ? new Error('limit out of size:' + _.max) : null); } }, { key: '_writev', value: function _writev(chunks, callback) { var _ = this; _tool2.default.each(chunks, function (v) { var _buf = _.buf; _.buf = _buf.concat(v.chunk.toJSON ? v.chunk.toJSON().data : v.chunk); _buf.splice(0, _buf.length); _buf = null; return false; }, true).then(function () { return callback(_.max > 0 && _.buf.length > _.max ? new Error('limit out of size:' + _.max) : null); }); } }, { key: 'toArray', value: function toArray() { var _ = this; return _.buf.splice(0, _.buf.length); } }]); return ArrayStream; }(_stream2.default.Duplex); exports.default = { ArrayStream: ArrayStream }; //# sourceMappingURL=arraystream.js.map