arnaucube
arnaucube/socketioMEANseedPublic Self-hosted repository
socketioMEANseed/server/node_modules/engine.io/lib/transport.js
server/node_modules/engine.io/lib/transport.jsRaw
  1
  2/**
  3 * Module dependencies.
  4 */
  5
  6var EventEmitter = require('events').EventEmitter;
  7var parser = require('engine.io-parser');
  8var util = require('util');
  9var debug = require('debug')('engine:transport');
 10
 11/**
 12 * Expose the constructor.
 13 */
 14
 15module.exports = Transport;
 16
 17/**
 18 * Noop function.
 19 *
 20 * @api private
 21 */
 22
 23function noop () {}
 24
 25/**
 26 * Transport constructor.
 27 *
 28 * @param {http.IncomingMessage} request
 29 * @api public
 30 */
 31
 32function Transport (req) {
 33  this.readyState = 'open';
 34  this.discarded = false;
 35}
 36
 37/**
 38 * Inherits from EventEmitter.
 39 */
 40
 41util.inherits(Transport, EventEmitter);
 42
 43/**
 44 * Flags the transport as discarded.
 45 *
 46 * @api private
 47 */
 48
 49Transport.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
 60Transport.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
 71Transport.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
 86Transport.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
104Transport.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
115Transport.prototype.onData = function (data) {
116  this.onPacket(parser.decodePacket(data));
117};
118
119/**
120 * Called upon transport close.
121 *
122 * @api private
123 */
124
125Transport.prototype.onClose = function () {
126  this.readyState = 'closed';
127  this.emit('close');
128};