[Service] Integrate DeviceHome and SignalingServer
[platform/framework/web/wrtjs.git] / device_home / node_modules / engine.io / lib / transport.js
1
2 /**
3  * Module dependencies.
4  */
5
6 var EventEmitter = require('events').EventEmitter;
7 var parser = require('engine.io-parser');
8 var util = require('util');
9 var debug = require('debug')('engine:transport');
10
11 /**
12  * Expose the constructor.
13  */
14
15 module.exports = Transport;
16
17 /**
18  * Noop function.
19  *
20  * @api private
21  */
22
23 function noop () {}
24
25 /**
26  * Transport constructor.
27  *
28  * @param {http.IncomingMessage} request
29  * @api public
30  */
31
32 function Transport (req) {
33   this.readyState = 'open';
34   this.discarded = false;
35 }
36
37 /**
38  * Inherits from EventEmitter.
39  */
40
41 util.inherits(Transport, EventEmitter);
42
43 /**
44  * Flags the transport as discarded.
45  *
46  * @api private
47  */
48
49 Transport.prototype.discard = function () {
50   this.discarded = true;
51 };
52
53 /**
54  * Called with an incoming HTTP request.
55  *
56  * @param {http.IncomingMessage} request
57  * @api private
58  */
59
60 Transport.prototype.onRequest = function (req) {
61   debug('setting request');
62   this.req = req;
63 };
64
65 /**
66  * Closes the transport.
67  *
68  * @api private
69  */
70
71 Transport.prototype.close = function (fn) {
72   if ('closed' === this.readyState || 'closing' === this.readyState) return;
73
74   this.readyState = 'closing';
75   this.doClose(fn || noop);
76 };
77
78 /**
79  * Called with a transport error.
80  *
81  * @param {String} message error
82  * @param {Object} error description
83  * @api private
84  */
85
86 Transport.prototype.onError = function (msg, desc) {
87   if (this.listeners('error').length) {
88     var err = new Error(msg);
89     err.type = 'TransportError';
90     err.description = desc;
91     this.emit('error', err);
92   } else {
93     debug('ignored transport error %s (%s)', msg, desc);
94   }
95 };
96
97 /**
98  * Called with parsed out a packets from the data stream.
99  *
100  * @param {Object} packet
101  * @api private
102  */
103
104 Transport.prototype.onPacket = function (packet) {
105   this.emit('packet', packet);
106 };
107
108 /**
109  * Called with the encoded packet data.
110  *
111  * @param {String} data
112  * @api private
113  */
114
115 Transport.prototype.onData = function (data) {
116   this.onPacket(parser.decodePacket(data));
117 };
118
119 /**
120  * Called upon transport close.
121  *
122  * @api private
123  */
124
125 Transport.prototype.onClose = function () {
126   this.readyState = 'closed';
127   this.emit('close');
128 };