1 /* Copyright 2015-present Samsung Electronics Co., Ltd. and other contributors
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
17 var util = require('util');
18 var Readable = require('stream_readable');
19 var Writable = require('stream_writable');
22 function Duplex(options) {
23 if (!(this instanceof Duplex)) {
24 return new Duplex(options);
27 Readable.call(this, options);
28 Writable.call(this, options);
31 // Duplex inherits Readable.
32 util.inherits(Duplex, Readable);
35 // Duplex should also inherits Writable but there are no way for inheriting
36 // from multiple parents. Copy properties from Writable.
37 var keys = Object.keys(Writable.prototype);
38 for (var i = 0; i < keys.length; ++i) {
40 if (!Duplex.prototype[key]) {
41 Duplex.prototype[key] = Writable.prototype[key];
46 module.exports = Duplex;