UNPKG

11.8 kBSource Map (JSON)View Raw
1{"version":3,"file":"rpc-node.js","sourceRoot":"","sources":["../src/rpc-node.ts"],"names":[],"mappings":"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","sourcesContent":["import * as net from \"net\"\nimport { JsonRpc, Transport } from \"./rpc\"\nconst debug = require(\"debug\")(\"rpc\")\n\nexport function connect(port: number = 63342, domains: { [domainName:string]: { [methodName:string]:Function; }; } = null): JsonRpc {\n const transport = new SocketTransport()\n const server = new JsonRpc(transport, domains)\n transport.connect(port)\n return server\n}\n\nexport class SocketTransport implements Transport {\n opened: () => void\n messageReceived: (message: Array<any>) => void\n\n constructor(private socket: net.Socket = new net.Socket()) {\n }\n\n connect(port: number = 63342) {\n this.socket.connect(port, null, ()=> {\n debug(\"Connected to %s\", port)\n const opened = this.opened\n if (opened != null) {\n opened()\n }\n })\n this.socket.on(\"error\", (e: Error) => {\n console.error(e)\n })\n\n const messageReceived = this.messageReceived\n if (messageReceived == null) {\n console.warn(\"messageReceived is not specified, input will be ignored\")\n }\n else {\n const messageDecoder = new MessageDecoder(messageReceived)\n this.socket.on(\"data\", messageDecoder.messageReceived.bind(messageDecoder))\n }\n\n this.socket.write(new Buffer([67, 72, 105, -107, 126, -21, -81, -72, 64, 54, -87, -88, 0, -46, -48, 34, -7, -67]))\n }\n\n send(id: number, domain: string, command: string, params: any[] = null): void {\n const encodedParams = params == null || params.length === 0 ? null : JSON.stringify(params)\n const header = '[' + (id == -1 ? '' : (id + ', ')) + '\"' + domain + '\", \"' + command + '\"'\n const headerBuffer = new Buffer(4)\n headerBuffer.writeUInt32BE(header.length + (encodedParams == null ? 0 : Buffer.byteLength(encodedParams)) + 1 /* ] symbol*/, 0)\n this.socket.write(headerBuffer)\n\n debug(\"out: %s%s]\", header, encodedParams || \"\")\n\n this.socket.write(header)\n if (encodedParams != null) {\n this.socket.write(encodedParams)\n }\n this.socket.write(']')\n }\n\n sendResult(id: number, result: any): void {\n this.sendResultOrError(id, result, false)\n }\n\n sendError(id: number, error: any): void {\n this.sendResultOrError(id, error, true)\n }\n\n private sendResultOrError(id: number, result: any, isError: boolean): void {\n var encodedResult = JSON.stringify(result)\n var header = id + ', \"' + (isError ? 'e' : 'r') + '\"'\n const headerBuffer = new Buffer(4)\n headerBuffer.writeUInt32BE(Buffer.byteLength(encodedResult) + header.length, 0)\n this.socket.write(headerBuffer)\n this.socket.write(encodedResult)\n }\n}\n\nconst enum State {LENGTH, CONTENT}\n\nclass MessageDecoder {\n private state = State.LENGTH\n private contentLength = 0\n\n private buffers: Array<Buffer> = []\n private messageBuffer: Buffer\n\n private readableByteCount = 0\n\n private messageBufferOffset = 0\n\n constructor(private messageProcessor: (message: any)=>void) {\n }\n\n private concatBuffer(buffer: Buffer): Buffer {\n if (this.buffers.length === 0) {\n return buffer\n }\n\n this.buffers.push(buffer)\n let totalBuffer = Buffer.concat(this.buffers, this.readableByteCount)\n this.buffers.length = 0\n return totalBuffer\n }\n\n messageReceived(buffer: Buffer) {\n let offset = 0\n this.readableByteCount += buffer.length\n while (true) {\n //noinspection FallThroughInSwitchStatementJS\n switch (this.state) {\n case State.LENGTH: {\n if (this.readableByteCount < 4) {\n if (offset != 0) {\n buffer = buffer.slice(offset)\n }\n this.buffers.push(buffer)\n return\n }\n\n buffer = this.concatBuffer(buffer)\n this.state = State.CONTENT\n this.contentLength = buffer.readUInt32BE(offset)\n offset += 4\n\n if ((buffer.length - offset) < this.contentLength) {\n this.messageBuffer = new Buffer(this.contentLength)\n buffer.copy(this.messageBuffer, 0, offset)\n this.messageBufferOffset = 0\n this.readableByteCount = 0\n return\n }\n\n this.readableByteCount = buffer.length - offset\n }\n\n case State.CONTENT: {\n let rawMessage: string\n if (this.messageBuffer == null) {\n rawMessage = buffer.toString(\"utf8\", offset, offset + this.contentLength)\n offset += this.contentLength\n this.readableByteCount = buffer.length - offset\n }\n else {\n const requiredByteCount = this.messageBuffer.length - this.messageBufferOffset\n if (requiredByteCount > this.readableByteCount) {\n buffer.copy(this.messageBuffer, this.messageBufferOffset, offset)\n this.messageBufferOffset += this.readableByteCount\n this.readableByteCount = 0\n return\n }\n else {\n const newOffset = offset + requiredByteCount\n buffer.copy(this.messageBuffer, this.messageBufferOffset, offset, newOffset)\n offset = newOffset\n this.readableByteCount = buffer.length - offset\n rawMessage = this.messageBuffer.toString(\"utf8\")\n }\n }\n\n debug(\"in: %s\", rawMessage)\n try {\n this.state = State.LENGTH\n this.contentLength = 0\n\n this.messageProcessor(JSON.parse(rawMessage))\n }\n catch (e) {\n console.error(\"Error: %s,\\nInput: %s\", e, rawMessage)\n }\n }\n }\n }\n }\n}"]}
\No newline at end of file