UNPKG

occaecatidicta

Version:
80 lines (71 loc) 2.52 kB
import { getLogger } from 'omelox-logger'; let logger = getLogger('omelox-rpc', 'Coder'); import * as OutBuffer from './buffer/outputBuffer'; import * as InBuffer from './buffer/inputBuffer'; // import * as bBuffer from 'bearcat-buffer'; // let OutBuffer = bBuffer.outBuffer; // let InBuffer = bBuffer.inBuffer; export interface Msg { namespace: string; serverType: string; service: string; method: string; args: Array<string>; } export function encodeClient(id: number, msg: Msg, servicesMap: {[key: number]: any}) { // logger.debug('[encodeClient] id %s msg %j', id, msg); let outBuf = new OutBuffer.OutputBuffer(); outBuf.writeUInt(id); let namespace = msg['namespace']; let serverType = msg['serverType']; let service = msg['service']; let method = msg['method']; let args = msg['args'] || []; outBuf.writeShort(servicesMap[0][namespace]); outBuf.writeShort(servicesMap[1][service]); outBuf.writeShort(servicesMap[2][method]); // outBuf.writeString(namespace); // outBuf.writeString(service); // outBuf.writeString(method); outBuf.writeObject(args); return outBuf.getBuffer(); } export function encodeServer(id: number, args: object) { // logger.debug('[encodeServer] id %s args %j', id, args); let outBuf = new OutBuffer.OutputBuffer(); outBuf.writeUInt(id); outBuf.writeObject(args); return outBuf.getBuffer(); } export function decodeServer(buf: Buffer, servicesMap: {[key: number]: any}) { let inBuf = new InBuffer.InputBuffer(buf); let id = inBuf.readUInt(); let namespace = servicesMap[3][inBuf.readShort()]; let service = servicesMap[4][inBuf.readShort()]; let method = servicesMap[5][inBuf.readShort()]; // let namespace = inBuf.readString(); // let service = inBuf.readString(); // let method = inBuf.readString(); let args = inBuf.readObject(); // logger.debug('[decodeServer] namespace %s service %s method %s args %j', namespace, service, method, args) return { id: id, msg: { namespace: namespace, // serverType: serverType, service: service, method: method, args: args } }; } export function decodeClient(buf: Buffer) { let inBuf = new InBuffer.InputBuffer(buf); let id = inBuf.readUInt(); let resp = inBuf.readObject(); // logger.debug('[decodeClient] id %s resp %j', id, resp); return { id: id, resp: resp }; }