xref: /unit/src/nodejs/unit-http/socket.js (revision 1139:01322f5ec4e3)
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