diff --git a/README.md b/README.md index 47e4d5752f..8f4e0605bd 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,7 @@ List of Definitions * [Mustache.js](https://github.com/janl/mustache.js) (by [Boris Yankov](https://github.com/borisyankov)) * [Node.js](http://nodejs.org/) (from TypeScript samples) * [node_redis](https://github.com/mranney/node_redis) (by [Boris Yankov](https://github.com/borisyankov)) +* [node_zeromq](https://github.com/JustinTulloss/zeromq.node) (by [Dave McKeown](https://github.com/davemckeown)) * [node-sqlserver](https://github.com/WindowsAzure/node-sqlserver) (by [Boris Yankov](https://github.com/borisyankov)) * [Numeral.js](https://github.com/adamwdraper/Numeral-js) (by [Vincent Bortone](https://github.com/vbortone/)) * [PhantomJS](http://phantomjs.org) (by [Jed Hunsaker](https://github.com/jedhunsaker)) diff --git a/node_zeromq/zmq-tests.ts b/node_zeromq/zmq-tests.ts new file mode 100644 index 0000000000..26ffd2a20e --- /dev/null +++ b/node_zeromq/zmq-tests.ts @@ -0,0 +1,36 @@ +/// + +import zeromq = module('zmq'); +var zmq: zeromq; + +function test1() { + var sock = zmq.socket('push'); + sock.bindSync('tcp://127.0.0.1:3000'); + sock.send("some work"); +} + +function test2() { + var sock = zmq.socket('push'); + sock.bindSync('tcp://127.0.0.1:3000'); + sock.send(new ArrayBuffer(1000)); +} + +function test3() { + var sock = zmq.socket('push'); + sock.bindSync('tcp://127.0.0.1:3000'); + sock.send(['hello', 'world']); +} + +function test4() { + var sock = zmq.socket(zmq.types.pull); + sock.bind('tcp://127.0.0.1', err => { + sock.send("some work"); + }); +} + +function test5() { + var sock = zmq.socket(zmq.types.pull, zmq.options.linger); + sock.bind('tcp://127.0.0.1', err => { + sock.send("some work"); + }); +} \ No newline at end of file diff --git a/node_zeromq/zmq.d.ts b/node_zeromq/zmq.d.ts new file mode 100644 index 0000000000..4297eded66 --- /dev/null +++ b/node_zeromq/zmq.d.ts @@ -0,0 +1,185 @@ +// Type definitions for ZeroMQ Node +// Project: https://github.com/JustinTulloss/zeromq.node +// Definitions by: Dave McKeown +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare interface EventEmitter {}; + +declare module 'zmq' { + + interface SocketTypes { + pub: number; + xpub: number; + sub: number; + xsub: number; + req: number; + xreq: number; + rep: number; + xrep: number; + push: number; + pull: number; + dealer: number; + router: number; + pair: number; + } + + interface SocketOptions { + _fd: number; + _ioevents: number; + _receiveMore: number; + _subscribe: number; + _unsubscribe: number; + affinity: number; + backlog: number; + hwm: number; + identity: number; + linger: number; + mcast_loop: number; + rate: number; + rcvbuf: number; + last_endpoint: number; + reconnect_ivl: number; + recovery_ivl: number; + sndbuf: number; + swap: number; + } + + interface Socket extends EventEmitter { + /** + * Set `opt` to `val`. + * + * @param opt Option + * @param val Value + */ + setsocketopt(opt: number, val: any): Socket; + + /** + * Set `opt` to `val`. + * + * @param opt Option + * @param val Value + */ + setsocketopt(opt: string, val: any): Socket; + + /** + * Get socket `opt`. + * + * @param opt Option number + */ + getsocketopt(opt: number): any; + + /** + * Get socket `opt`. + * + * @param opt Option string + */ + getsocketopt(opt: string): any; + + /** + * Async bind. + * + * Emits the "bind" event. + * + * @param addr Socket address + * @param cb Bind callback + */ + bind(addr: string, callback: (error: string) => void ): Socket; + + /** + * Sync bind. + * + * @param addr Socket address + */ + bindSync(addr: string): Socket; + + /** + * Connect to `addr`. + * + * @param addr Connection address + */ + connect(addr: string): Socket; + + /** + * Disconnect from `addr`. + * + * @param addr The address + */ + disconnect(addr: string): Socket; + + /** + * Subscribe with the given `filter`. + * + * @param filter The filter + */ + subscribe(filter: string): Socket; + + /** + * Unsubscribe with the given `filter`. + * + * @param filter The filter + */ + unsubscribe(filter: string): Socket; + + /** + * Send the given `msg`. + * + * @param msg The message + * @param flags Message flags + */ + send(msg: string, flags?: number): Socket; + + /** + * Send the given `msg`. + * + * @param msg The message + * @param flags Message flags + */ + send(msg: ArrayBuffer, flags?: number): Socket; + + /** + * Send the given `msg`. + * + * @param msg The message + * @param flags Message flags + */ + send(msg: Array, flags?: number): Socket; + + /** + * Close the socket. + * + */ + close(): Socket; + + // Socket Options + _fd: any; + _ioevents: any; + _receiveMore: any; + _subscribe: any; + _unsubscribe: any; + affinity: any; + backlog(): any; + hwm: any; + identity: any; + linger: any; + mcast_loop: any; + rate: any; + rcvbuf: any; + last_endpoint: any; + reconnect_ivl: any; + recovery_ivl: any; + sndbuf: any; + swap: any; + + + } + + export var version: string; + export var types: SocketTypes; + export var options: SocketOptions; + + function socket(type: string, options?: any): Socket; + function socket(type: number, options?: any): Socket; + function createSocket(type: string, options?: any): Socket; + + +} \ No newline at end of file