[node] Add events for dgram (#11501)

* Add events for dgram

* Add tests for dgram

* Correct dgram.RemoteInfo interface

* Correct emit

* Correct emit
This commit is contained in:
TonyYang
2016-09-28 20:44:55 +08:00
committed by Masahiro Wakame
parent bbf7d43323
commit 7315e9e81f
2 changed files with 124 additions and 9 deletions

View File

@@ -659,14 +659,86 @@ namespace tty_tests {
////////////////////////////////////////////////////
namespace dgram_tests {
var ds: dgram.Socket = dgram.createSocket("udp4", (msg: Buffer, rinfo: dgram.RemoteInfo): void => {
});
ds.bind();
ds.bind(41234);
var ai: dgram.AddressInfo = ds.address();
ds.send(new Buffer("hello"), 0, 5, 5000, "127.0.0.1", (error: Error, bytes: number): void => {
});
ds.send(new Buffer("hello"), 5000, "127.0.0.1");
{
var ds: dgram.Socket = dgram.createSocket("udp4", (msg: Buffer, rinfo: dgram.RemoteInfo): void => {
});
ds.bind();
ds.bind(41234);
var ai: dgram.AddressInfo = ds.address();
ds.send(new Buffer("hello"), 0, 5, 5000, "127.0.0.1", (error: Error, bytes: number): void => {
});
ds.send(new Buffer("hello"), 5000, "127.0.0.1");
}
{
let _socket: dgram.Socket;
let _boolean: boolean;
let _err: Error;
let _str: string;
let _rinfo: dgram.AddressInfo;
/**
* events.EventEmitter
* 1. close
* 2. error
* 3. listening
* 4. message
**/
_socket = _socket.addListener("close", () => {});
_socket = _socket.addListener("error", (err) => {
let _err: Error = err;
})
_socket = _socket.addListener("listening", () => {});
_socket = _socket.addListener("message", (msg, rinfo) => {
let _msg: string = msg;
let _rinfo: dgram.AddressInfo = rinfo;
})
_boolean = _socket.emit("close")
_boolean = _socket.emit("error", _err);
_boolean = _socket.emit("listening");
_boolean = _socket.emit("message", _str, _rinfo);
_socket = _socket.on("close", () => {});
_socket = _socket.on("error", (err) => {
let _err: Error = err;
})
_socket = _socket.on("listening", () => {});
_socket = _socket.on("message", (msg, rinfo) => {
let _msg: string = msg;
let _rinfo: dgram.AddressInfo = rinfo;
})
_socket = _socket.once("close", () => {});
_socket = _socket.once("error", (err) => {
let _err: Error = err;
})
_socket = _socket.once("listening", () => {});
_socket = _socket.once("message", (msg, rinfo) => {
let _msg: string = msg;
let _rinfo: dgram.AddressInfo = rinfo;
})
_socket = _socket.prependListener("close", () => {});
_socket = _socket.prependListener("error", (err) => {
let _err: Error = err;
})
_socket = _socket.prependListener("listening", () => {});
_socket = _socket.prependListener("message", (msg, rinfo) => {
let _msg: string = msg;
let _rinfo: dgram.AddressInfo = rinfo;
})
_socket = _socket.prependOnceListener("close", () => {});
_socket = _socket.prependOnceListener("error", (err) => {
let _err: Error = err;
})
_socket = _socket.prependOnceListener("listening", () => {});
_socket = _socket.prependOnceListener("message", (msg, rinfo) => {
let _msg: string = msg;
let _rinfo: dgram.AddressInfo = rinfo;
})
}
}
////////////////////////////////////////////////////

45
node/node.d.ts vendored
View File

@@ -1855,8 +1855,8 @@ declare module "dgram" {
interface RemoteInfo {
address: string;
family: string;
port: number;
size: number;
}
interface AddressInfo {
@@ -1894,6 +1894,49 @@ declare module "dgram" {
dropMembership(multicastAddress: string, multicastInterface?: string): void;
ref(): void;
unref(): void;
/**
* events.EventEmitter
* 1. close
* 2. error
* 3. listening
* 4. message
**/
addListener(event: string, listener: Function): this;
addListener(event: "close", listener: () => void): this;
addListener(event: "error", listener: (err: Error) => void): this;
addListener(event: "listening", listener: () => void): this;
addListener(event: "message", listener: (msg: string, rinfo: AddressInfo) => void): this;
emit(event: string, ...args: any[]): boolean;
emit(event: "close"): boolean;
emit(event: "error", err: Error): boolean;
emit(event: "listening"): boolean;
emit(event: "message", msg: string, rinfo: AddressInfo): boolean;
on(event: string, listener: Function): this;
on(event: "close", listener: () => void): this;
on(event: "error", listener: (err: Error) => void): this;
on(event: "listening", listener: () => void): this;
on(event: "message", listener: (msg: string, rinfo: AddressInfo) => void): this;
once(event: string, listener: Function): this;
once(event: "close", listener: () => void): this;
once(event: "error", listener: (err: Error) => void): this;
once(event: "listening", listener: () => void): this;
once(event: "message", listener: (msg: string, rinfo: AddressInfo) => void): this;
prependListener(event: string, listener: Function): this;
prependListener(event: "close", listener: () => void): this;
prependListener(event: "error", listener: (err: Error) => void): this;
prependListener(event: "listening", listener: () => void): this;
prependListener(event: "message", listener: (msg: string, rinfo: AddressInfo) => void): this;
prependOnceListener(event: string, listener: Function): this;
prependOnceListener(event: "close", listener: () => void): this;
prependOnceListener(event: "error", listener: (err: Error) => void): this;
prependOnceListener(event: "listening", listener: () => void): this;
prependOnceListener(event: "message", listener: (msg: string, rinfo: AddressInfo) => void): this;
}
}