Update Iot.js
[platform/upstream/iotjs.git] / tools / src / js / stream_duplex.js
1 /* Copyright 2015-present Samsung Electronics Co., Ltd. and other contributors
2  *
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
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
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.
14  */
15
16
17 var util = require('util');
18 var Readable = require('stream_readable');
19 var Writable = require('stream_writable');
20
21
22 function Duplex(options) {
23   if (!(this instanceof Duplex)) {
24     return new Duplex(options);
25   }
26
27   Readable.call(this, options);
28   Writable.call(this, options);
29 }
30
31 // Duplex inherits Readable.
32 util.inherits(Duplex, Readable);
33
34
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) {
39   var key = keys[i];
40   if (!Duplex.prototype[key]) {
41     Duplex.prototype[key] = Writable.prototype[key];
42   }
43 }
44
45
46 module.exports = Duplex;