occaecatidicta
Version:
80 lines (71 loc) • 2.52 kB
text/typescript
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
};
}