Merge pull request #11373 from TonyPythoneer/fix-net-events

[node] Fix net events
This commit is contained in:
Andy
2016-09-21 12:20:41 -07:00
committed by GitHub
2 changed files with 389 additions and 49 deletions
+229 -3
View File
@@ -70,7 +70,7 @@ namespace assert_tests {
namespace events_tests {
let emitter: events.EventEmitter;
let event: string|symbol;
let event: string | symbol;
let listener: Function;
let any: any;
@@ -114,7 +114,7 @@ namespace events_tests {
}
{
let result: (string|symbol)[];
let result: (string | symbol)[];
result = emitter.eventNames();
}
@@ -969,7 +969,7 @@ namespace child_process_tests {
/// cluster tests: https://nodejs.org/api/cluster.html ///
//////////////////////////////////////////////////////////////////////
namespace cluster_tests  {
namespace cluster_tests {
{
cluster.fork();
Object.keys(cluster.workers).forEach(key => {
@@ -1151,6 +1151,232 @@ namespace net_tests {
// Make sure .listen() and .close() retuern a Server instance
net.createServer().listen(0).close().address();
}
{
/**
* net.Socket - events.EventEmitter
* 1. close
* 2. connect
* 3. data
* 4. drain
* 5. end
* 6. error
* 7. lookup
* 8. timeout
*/
let _socket: net.Socket;
let bool: boolean;
let buffer: Buffer;
let error: Error;
let str: string;
let num: number;
/// addListener
_socket = _socket.addListener("close", had_error => {
bool = had_error;
})
_socket = _socket.addListener("connect", () => { })
_socket = _socket.addListener("data", data => {
buffer = data;
})
_socket = _socket.addListener("drain", () => { })
_socket = _socket.addListener("end", () => { })
_socket = _socket.addListener("error", err => {
error = err;
})
_socket = _socket.addListener("lookup", (err, address, family, host) => {
error = err;
if (typeof family === 'string') {
str = family;
} else if (typeof family === 'number') {
num = family;
}
str = host;
})
_socket = _socket.addListener("timeout", () => { })
/// emit
bool = _socket.emit("close", bool);
bool = _socket.emit("connect");
bool = _socket.emit("data", buffer);
bool = _socket.emit("drain");
bool = _socket.emit("end");
bool = _socket.emit("error", error);
bool = _socket.emit("lookup", error, str, str, str);
bool = _socket.emit("lookup", error, str, num, str);
bool = _socket.emit("timeout");
/// on
_socket = _socket.on("close", had_error => {
bool = had_error;
})
_socket = _socket.on("connect", () => { })
_socket = _socket.on("data", data => {
buffer = data;
})
_socket = _socket.on("drain", () => { })
_socket = _socket.on("end", () => { })
_socket = _socket.on("error", err => {
error = err;
})
_socket = _socket.on("lookup", (err, address, family, host) => {
error = err;
if (typeof family === 'string') {
str = family;
} else if (typeof family === 'number') {
num = family;
}
str = host;
})
_socket = _socket.on("timeout", () => { })
/// once
_socket = _socket.once("close", had_error => {
bool = had_error;
})
_socket = _socket.once("connect", () => { })
_socket = _socket.once("data", data => {
buffer = data;
})
_socket = _socket.once("drain", () => { })
_socket = _socket.once("end", () => { })
_socket = _socket.once("error", err => {
error = err;
})
_socket = _socket.once("lookup", (err, address, family, host) => {
error = err;
if (typeof family === 'string') {
str = family;
} else if (typeof family === 'number') {
num = family;
}
str = host;
})
_socket = _socket.once("timeout", () => { })
/// prependListener
_socket = _socket.prependListener("close", had_error => {
bool = had_error;
})
_socket = _socket.prependListener("connect", () => { })
_socket = _socket.prependListener("data", data => {
buffer = data;
})
_socket = _socket.prependListener("drain", () => { })
_socket = _socket.prependListener("end", () => { })
_socket = _socket.prependListener("error", err => {
error = err;
})
_socket = _socket.prependListener("lookup", (err, address, family, host) => {
error = err;
if (typeof family === 'string') {
str = family;
} else if (typeof family === 'number') {
num = family;
}
str = host;
})
_socket = _socket.prependListener("timeout", () => { })
/// prependOnceListener
_socket = _socket.prependOnceListener("close", had_error => {
bool = had_error;
})
_socket = _socket.prependOnceListener("connect", () => { })
_socket = _socket.prependOnceListener("data", data => {
buffer = data;
})
_socket = _socket.prependOnceListener("drain", () => { })
_socket = _socket.prependOnceListener("end", () => { })
_socket = _socket.prependOnceListener("error", err => {
error = err;
})
_socket = _socket.prependOnceListener("lookup", (err, address, family, host) => {
error = err;
if (typeof family === 'string') {
str = family;
} else if (typeof family === 'number') {
num = family;
}
str = host;
})
_socket = _socket.prependOnceListener("timeout", () => { })
}
{
/**
* net.Server - events.EventEmitter
* 1. close
* 2. connection
* 3. error
* 4. listening
*/
let _server: net.Server;
let _socket: net.Socket;
let bool: boolean;
let error: Error;
/// addListener
_server = _server.addListener("close", () => { })
_server = _server.addListener("connection", socket => {
_socket = socket
})
_server = _server.addListener("error", err => {
error = err;
})
_server = _server.addListener("listening", () => { })
/// emit
bool = _server.emit("close")
bool = _server.emit("connection", _socket)
bool = _server.emit("error", error)
bool = _server.emit("listening")
/// once
_server = _server.once("close", () => { })
_server = _server.once("connection", socket => {
_socket = socket
})
_server = _server.once("error", err => {
error = err;
})
_server = _server.once("listening", () => { })
/// prependListener
_server = _server.prependListener("close", () => { })
_server = _server.prependListener("connection", socket => {
_socket = socket
})
_server = _server.prependListener("error", err => {
error = err;
})
_server = _server.prependListener("listening", () => { })
/// prependOnceListener
_server = _server.prependOnceListener("close", () => { })
_server = _server.prependOnceListener("connection", socket => {
_socket = socket
})
_server = _server.prependOnceListener("error", err => {
error = err;
})
_server = _server.prependOnceListener("listening", () => { })
}
}
/*****************************************************************************
+160 -46
View File
@@ -241,20 +241,20 @@ declare namespace NodeJS {
}
export class EventEmitter {
addListener(event: string|symbol, listener: Function): this;
on(event: string|symbol, listener: Function): this;
once(event: string|symbol, listener: Function): this;
removeListener(event: string|symbol, listener: Function): this;
removeAllListeners(event?: string|symbol): this;
addListener(event: string | symbol, listener: Function): this;
on(event: string | symbol, listener: Function): this;
once(event: string | symbol, listener: Function): this;
removeListener(event: string | symbol, listener: Function): this;
removeAllListeners(event?: string | symbol): this;
setMaxListeners(n: number): this;
getMaxListeners(): number;
listeners(event: string|symbol): Function[];
emit(event: string|symbol, ...args: any[]): boolean;
listenerCount(type: string|symbol): number;
listeners(event: string | symbol): Function[];
emit(event: string | symbol, ...args: any[]): boolean;
listenerCount(type: string | symbol): number;
// Added in Node 6...
prependListener(event: string|symbol, listener: Function): this;
prependOnceListener(event: string|symbol, listener: Function): this;
eventNames(): (string|symbol)[];
prependListener(event: string | symbol, listener: Function): this;
prependOnceListener(event: string | symbol, listener: Function): this;
eventNames(): (string | symbol)[];
}
export interface ReadableStream extends EventEmitter {
@@ -464,7 +464,7 @@ interface IterableIterator<T> { }
interface NodeBuffer extends Uint8Array {
write(string: string, offset?: number, length?: number, encoding?: string): number;
toString(encoding?: string, start?: number, end?: number): string;
toJSON(): {type: 'Buffer', data: any[]};
toJSON(): { type: 'Buffer', data: any[] };
equals(otherBuffer: Buffer): boolean;
compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
@@ -549,22 +549,22 @@ declare module "querystring" {
declare module "events" {
export class EventEmitter extends NodeJS.EventEmitter {
static EventEmitter: EventEmitter;
static listenerCount(emitter: EventEmitter, event: string|symbol): number; // deprecated
static listenerCount(emitter: EventEmitter, event: string | symbol): number; // deprecated
static defaultMaxListeners: number;
addListener(event: string|symbol, listener: Function): this;
on(event: string|symbol, listener: Function): this;
once(event: string|symbol, listener: Function): this;
prependListener(event: string|symbol, listener: Function): this;
prependOnceListener(event: string|symbol, listener: Function): this;
removeListener(event: string|symbol, listener: Function): this;
removeAllListeners(event?: string|symbol): this;
addListener(event: string | symbol, listener: Function): this;
on(event: string | symbol, listener: Function): this;
once(event: string | symbol, listener: Function): this;
prependListener(event: string | symbol, listener: Function): this;
prependOnceListener(event: string | symbol, listener: Function): this;
removeListener(event: string | symbol, listener: Function): this;
removeAllListeners(event?: string | symbol): this;
setMaxListeners(n: number): this;
getMaxListeners(): number;
listeners(event: string|symbol): Function[];
emit(event: string|symbol, ...args: any[]): boolean;
eventNames(): (string|symbol)[];
listenerCount(type: string|symbol): number;
listeners(event: string | symbol): Function[];
emit(event: string | symbol, ...args: any[]): boolean;
eventNames(): (string | symbol)[];
listenerCount(type: string | symbol): number;
}
}
@@ -779,7 +779,7 @@ declare module "cluster" {
isConnected(): boolean;
isDead(): boolean;
exitedAfterDisconnect: boolean;
/**
* events.EventEmitter
* 1. disconnect
@@ -796,7 +796,7 @@ declare module "cluster" {
addListener(event: "listening", listener: (address: Address) => void): this;
addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
addListener(event: "online", listener: () => void): this;
on(event: string, listener: Function): this;
on(event: "disconnect", listener: () => void): this;
on(event: "error", listener: (code: number, signal: string) => void): this;
@@ -804,7 +804,7 @@ declare module "cluster" {
on(event: "listening", listener: (address: Address) => void): this;
on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
on(event: "online", listener: () => void): this;
once(event: string, listener: Function): this;
once(event: "disconnect", listener: () => void): this;
once(event: "error", listener: (code: number, signal: string) => void): this;
@@ -812,7 +812,7 @@ declare module "cluster" {
once(event: "listening", listener: (address: Address) => void): this;
once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
once(event: "online", listener: () => void): this;
prependListener(event: string, listener: Function): this;
prependListener(event: "disconnect", listener: () => void): this;
prependListener(event: "error", listener: (code: number, signal: string) => void): this;
@@ -820,7 +820,7 @@ declare module "cluster" {
prependListener(event: "listening", listener: (address: Address) => void): this;
prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this; // the handle is a net.Socket or net.Server object, or undefined.
prependListener(event: "online", listener: () => void): this;
prependOnceListener(event: string, listener: Function): this;
prependOnceListener(event: "disconnect", listener: () => void): this;
prependOnceListener(event: "error", listener: (code: number, signal: string) => void): this;
@@ -901,7 +901,7 @@ declare module "cluster" {
}
export function disconnect(callback ?: Function): void;
export function disconnect(callback?: Function): void;
export function fork(env?: any): Worker;
export var isMaster: boolean;
export var isWorker: boolean;
@@ -1591,7 +1591,7 @@ declare module "dns" {
export function resolve(domain: string, callback: (err: Error, addresses: string[]) => void): string[];
export function resolve4(domain: string, callback: (err: Error, addresses: string[]) => void): string[];
export function resolve6(domain: string, callback: (err: Error, addresses: string[]) => void): string[];
export function resolveMx(domain: string, callback: (err: Error, addresses: MxRecord[]) =>void ): string[];
export function resolveMx(domain: string, callback: (err: Error, addresses: MxRecord[]) => void): string[];
export function resolveTxt(domain: string, callback: (err: Error, addresses: string[]) => void): string[];
export function resolveSrv(domain: string, callback: (err: Error, addresses: string[]) => void): string[];
export function resolveNs(domain: string, callback: (err: Error, addresses: string[]) => void): string[];
@@ -1666,6 +1666,77 @@ declare module "net" {
end(str: string, cb?: Function): void;
end(str: string, encoding?: string, cb?: Function): void;
end(data?: any, encoding?: string): void;
/**
* events.EventEmitter
* 1. close
* 2. connect
* 3. data
* 4. drain
* 5. end
* 6. error
* 7. lookup
* 8. timeout
*/
addListener(event: string, listener: Function): this;
addListener(event: "close", listener: (had_error: boolean) => void): this;
addListener(event: "connect", listener: () => void): this;
addListener(event: "data", listener: (data: Buffer) => void): this;
addListener(event: "drain", listener: () => void): this;
addListener(event: "end", listener: () => void): this;
addListener(event: "error", listener: (err: Error) => void): this;
addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
addListener(event: "timeout", listener: () => void): this;
emit(event: string, ...args: any[]): boolean;
emit(event: "close", had_error: boolean): boolean;
emit(event: "connect"): boolean;
emit(event: "data", data: Buffer): boolean;
emit(event: "drain"): boolean;
emit(event: "end"): boolean;
emit(event: "error", err: Error): boolean;
emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean;
emit(event: "timeout"): boolean;
on(event: string, listener: Function): this;
on(event: "close", listener: (had_error: boolean) => void): this;
on(event: "connect", listener: () => void): this;
on(event: "data", listener: (data: Buffer) => void): this;
on(event: "drain", listener: () => void): this;
on(event: "end", listener: () => void): this;
on(event: "error", listener: (err: Error) => void): this;
on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
on(event: "timeout", listener: () => void): this;
once(event: string, listener: Function): this;
once(event: "close", listener: (had_error: boolean) => void): this;
once(event: "connect", listener: () => void): this;
once(event: "data", listener: (data: Buffer) => void): this;
once(event: "drain", listener: () => void): this;
once(event: "end", listener: () => void): this;
once(event: "error", listener: (err: Error) => void): this;
once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
once(event: "timeout", listener: () => void): this;
prependListener(event: string, listener: Function): this;
prependListener(event: "close", listener: (had_error: boolean) => void): this;
prependListener(event: "connect", listener: () => void): this;
prependListener(event: "data", listener: (data: Buffer) => void): this;
prependListener(event: "drain", listener: () => void): this;
prependListener(event: "end", listener: () => void): this;
prependListener(event: "error", listener: (err: Error) => void): this;
prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
prependListener(event: "timeout", listener: () => void): this;
prependOnceListener(event: string, listener: Function): this;
prependOnceListener(event: "close", listener: (had_error: boolean) => void): this;
prependOnceListener(event: "connect", listener: () => void): this;
prependOnceListener(event: "data", listener: (data: Buffer) => void): this;
prependOnceListener(event: "drain", listener: () => void): this;
prependOnceListener(event: "end", listener: () => void): this;
prependOnceListener(event: "error", listener: (err: Error) => void): this;
prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
prependOnceListener(event: "timeout", listener: () => void): this;
}
export var Socket: {
@@ -1697,6 +1768,49 @@ declare module "net" {
unref(): Server;
maxConnections: number;
connections: number;
/**
* events.EventEmitter
* 1. close
* 2. connection
* 3. error
* 4. listening
*/
addListener(event: string, listener: Function): this;
addListener(event: "close", listener: () => void): this;
addListener(event: "connection", listener: (socket: Socket) => void): this;
addListener(event: "error", listener: (err: Error) => void): this;
addListener(event: "listening", listener: () => void): this;
emit(event: string, ...args: any[]): boolean;
emit(event: "close"): boolean;
emit(event: "connection", socket: Socket): boolean;
emit(event: "error", err: Error): boolean;
emit(event: "listening"): boolean;
on(event: string, listener: Function): this;
on(event: "close", listener: () => void): this;
on(event: "connection", listener: (socket: Socket) => void): this;
on(event: "error", listener: (err: Error) => void): this;
on(event: "listening", listener: () => void): this;
once(event: string, listener: Function): this;
once(event: "close", listener: () => void): this;
once(event: "connection", listener: (socket: Socket) => void): this;
once(event: "error", listener: (err: Error) => void): this;
once(event: "listening", listener: () => void): this;
prependListener(event: string, listener: Function): this;
prependListener(event: "close", listener: () => void): this;
prependListener(event: "connection", listener: (socket: Socket) => void): this;
prependListener(event: "error", listener: (err: Error) => void): this;
prependListener(event: "listening", listener: () => void): this;
prependOnceListener(event: string, listener: Function): this;
prependOnceListener(event: "close", listener: () => void): this;
prependOnceListener(event: "connection", listener: (socket: Socket) => void): this;
prependOnceListener(event: "error", listener: (err: Error) => void): this;
prependOnceListener(event: "listening", listener: () => void): this;
}
export function createServer(connectionListener?: (socket: Socket) => void): Server;
export function createServer(options?: { allowHalfOpen?: boolean; }, connectionListener?: (socket: Socket) => void): Server;
@@ -1788,7 +1902,7 @@ declare module "fs" {
interface FSWatcher extends events.EventEmitter {
close(): void;
/**
* events.EventEmitter
* 1. change
@@ -1797,19 +1911,19 @@ declare module "fs" {
addListener(event: string, listener: Function): this;
addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
addListener(event: "error", listener: (code: number, signal: string) => void): this;
on(event: string, listener: Function): this;
on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
on(event: "error", listener: (code: number, signal: string) => void): this;
once(event: string, listener: Function): this;
once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
once(event: "error", listener: (code: number, signal: string) => void): this;
prependListener(event: string, listener: Function): this;
prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
prependListener(event: "error", listener: (code: number, signal: string) => void): this;
prependOnceListener(event: string, listener: Function): this;
prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
prependOnceListener(event: "error", listener: (code: number, signal: string) => void): this;
@@ -1818,7 +1932,7 @@ declare module "fs" {
export interface ReadStream extends stream.Readable {
close(): void;
destroy(): void;
/**
* events.EventEmitter
* 1. open
@@ -1827,19 +1941,19 @@ declare module "fs" {
addListener(event: string, listener: Function): this;
addListener(event: "open", listener: (fd: number) => void): this;
addListener(event: "close", listener: () => void): this;
on(event: string, listener: Function): this;
on(event: "open", listener: (fd: number) => void): this;
on(event: "close", listener: () => void): this;
once(event: string, listener: Function): this;
once(event: "open", listener: (fd: number) => void): this;
once(event: "close", listener: () => void): this;
prependListener(event: string, listener: Function): this;
prependListener(event: "open", listener: (fd: number) => void): this;
prependListener(event: "close", listener: () => void): this;
prependOnceListener(event: string, listener: Function): this;
prependOnceListener(event: "open", listener: (fd: number) => void): this;
prependOnceListener(event: "close", listener: () => void): this;
@@ -1849,7 +1963,7 @@ declare module "fs" {
close(): void;
bytesWritten: number;
path: string | Buffer;
/**
* events.EventEmitter
* 1. open
@@ -1858,19 +1972,19 @@ declare module "fs" {
addListener(event: string, listener: Function): this;
addListener(event: "open", listener: (fd: number) => void): this;
addListener(event: "close", listener: () => void): this;
on(event: string, listener: Function): this;
on(event: "open", listener: (fd: number) => void): this;
on(event: "close", listener: () => void): this;
once(event: string, listener: Function): this;
once(event: "open", listener: (fd: number) => void): this;
once(event: "close", listener: () => void): this;
prependListener(event: string, listener: Function): this;
prependListener(event: "open", listener: (fd: number) => void): this;
prependListener(event: "close", listener: () => void): this;
prependOnceListener(event: string, listener: Function): this;
prependOnceListener(event: "open", listener: (fd: number) => void): this;
prependOnceListener(event: "close", listener: () => void): this;