1802Salexander.borisov@nginx.com 2802Salexander.borisov@nginx.com/* 3802Salexander.borisov@nginx.com * Copyright (C) NGINX, Inc. 4802Salexander.borisov@nginx.com */ 5802Salexander.borisov@nginx.com 6802Salexander.borisov@nginx.com'use strict'; 7802Salexander.borisov@nginx.com 8802Salexander.borisov@nginx.comconst EventEmitter = require('events'); 9802Salexander.borisov@nginx.comconst util = require('util'); 10*1132Smax.romanov@nginx.comconst unit_lib = require('./build/Release/unit-http'); 11802Salexander.borisov@nginx.com 12802Salexander.borisov@nginx.comfunction Socket(options) { 13802Salexander.borisov@nginx.com EventEmitter.call(this); 14802Salexander.borisov@nginx.com 15831Szelenkov@nginx.com options = options || {}; 16802Salexander.borisov@nginx.com 17831Szelenkov@nginx.com if (typeof options !== 'object') { 18831Szelenkov@nginx.com throw new TypeError('Options must be object'); 19802Salexander.borisov@nginx.com } 20802Salexander.borisov@nginx.com 21872Salexander.borisov@nginx.com if ("fd" in options) { 22872Salexander.borisov@nginx.com throw new TypeError('Working with file descriptors not supported'); 23872Salexander.borisov@nginx.com } 24872Salexander.borisov@nginx.com 25872Salexander.borisov@nginx.com /* 26872Salexander.borisov@nginx.com * For HTTP TCP socket 'readable' and 'writable' are always true. 27872Salexander.borisov@nginx.com * These options are required by Express and Koa frameworks. 28872Salexander.borisov@nginx.com */ 29872Salexander.borisov@nginx.com this.readable = true; 30872Salexander.borisov@nginx.com this.writable = true; 31802Salexander.borisov@nginx.com} 32802Salexander.borisov@nginx.comutil.inherits(Socket, EventEmitter); 33802Salexander.borisov@nginx.com 34802Salexander.borisov@nginx.comSocket.prototype.bufferSize = 0; 35802Salexander.borisov@nginx.comSocket.prototype.bytesRead = 0; 36802Salexander.borisov@nginx.comSocket.prototype.bytesWritten = 0; 37802Salexander.borisov@nginx.comSocket.prototype.connecting = false; 38802Salexander.borisov@nginx.comSocket.prototype.destroyed = false; 39802Salexander.borisov@nginx.comSocket.prototype.localAddress = ""; 40802Salexander.borisov@nginx.comSocket.prototype.localPort = 0; 41802Salexander.borisov@nginx.comSocket.prototype.remoteAddress = ""; 42802Salexander.borisov@nginx.comSocket.prototype.remoteFamily = ""; 43802Salexander.borisov@nginx.comSocket.prototype.remotePort = 0; 44802Salexander.borisov@nginx.com 45802Salexander.borisov@nginx.comSocket.prototype.address = function address() { 46802Salexander.borisov@nginx.com}; 47802Salexander.borisov@nginx.com 48831Szelenkov@nginx.comSocket.prototype.connect = function connect(options, connectListener) { 49831Szelenkov@nginx.com this.once('connect', connectListener); 50802Salexander.borisov@nginx.com 51802Salexander.borisov@nginx.com this.connecting = true; 52802Salexander.borisov@nginx.com 53831Szelenkov@nginx.com return this; 54802Salexander.borisov@nginx.com}; 55802Salexander.borisov@nginx.com 56802Salexander.borisov@nginx.comSocket.prototype.destroy = function destroy(exception) { 57802Salexander.borisov@nginx.com this.connecting = false; 58802Salexander.borisov@nginx.com this.readable = false; 59802Salexander.borisov@nginx.com this.writable = false; 60831Szelenkov@nginx.com 61831Szelenkov@nginx.com return this; 62802Salexander.borisov@nginx.com}; 63802Salexander.borisov@nginx.com 64831Szelenkov@nginx.comSocket.prototype.end = function end(data, encoding, callback) { 65802Salexander.borisov@nginx.com}; 66802Salexander.borisov@nginx.com 67802Salexander.borisov@nginx.comSocket.prototype.pause = function pause() { 68802Salexander.borisov@nginx.com}; 69802Salexander.borisov@nginx.com 70802Salexander.borisov@nginx.comSocket.prototype.ref = function ref() { 71802Salexander.borisov@nginx.com}; 72802Salexander.borisov@nginx.com 73802Salexander.borisov@nginx.comSocket.prototype.resume = function resume() { 74802Salexander.borisov@nginx.com}; 75802Salexander.borisov@nginx.com 76802Salexander.borisov@nginx.comSocket.prototype.setEncoding = function setEncoding(encoding) { 77802Salexander.borisov@nginx.com}; 78802Salexander.borisov@nginx.com 79802Salexander.borisov@nginx.comSocket.prototype.setKeepAlive = function setKeepAlive(enable, initialDelay) { 80802Salexander.borisov@nginx.com}; 81802Salexander.borisov@nginx.com 82802Salexander.borisov@nginx.comSocket.prototype.setNoDelay = function setNoDelay(noDelay) { 83802Salexander.borisov@nginx.com}; 84802Salexander.borisov@nginx.com 85831Szelenkov@nginx.comSocket.prototype.setTimeout = function setTimeout(timeout, callback) { 86831Szelenkov@nginx.com if (typeof timeout !== 'number') { 87831Szelenkov@nginx.com throw new TypeError('Timeout must be number'); 88831Szelenkov@nginx.com } 89802Salexander.borisov@nginx.com 90831Szelenkov@nginx.com this.timeout = timeout; 91831Szelenkov@nginx.com 92*1132Smax.romanov@nginx.com // this.on('timeout', callback); 93802Salexander.borisov@nginx.com 94802Salexander.borisov@nginx.com return this; 95802Salexander.borisov@nginx.com}; 96802Salexander.borisov@nginx.com 97802Salexander.borisov@nginx.comSocket.prototype.unref = function unref() { 98802Salexander.borisov@nginx.com}; 99802Salexander.borisov@nginx.com 100802Salexander.borisov@nginx.comSocket.prototype.write = function write(data, encoding, callback) { 101802Salexander.borisov@nginx.com}; 102802Salexander.borisov@nginx.com 103802Salexander.borisov@nginx.com 104*1132Smax.romanov@nginx.commodule.exports = Socket; 105