mudb
Version:
Real-time database for multiplayer games
42 lines • 1.46 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const protocol_1 = require("./protocol");
const logger_1 = require("../logger");
class MuRPCClient {
constructor(protocol, transport, logger) {
this._handleResponse = (response) => {
const { type, data } = response;
response.type = 'error';
response.data = '';
this.schemas.responseSchema.free(response);
if (type === 'success') {
return data.data;
}
else {
this.logger.exception(data);
throw data;
}
};
this.schemas = new protocol_1.MuRPCSchemas(protocol);
this.transport = transport;
this.logger = logger || logger_1.MuDefaultLogger;
const api = this.api = {};
const methods = Object.keys(protocol.api);
for (let i = 0; i < methods.length; ++i) {
const method = methods[i];
api[method] = this._createRPC(method);
}
}
_createRPC(method) {
return (arg) => {
const rpc = this.schemas.argSchema.alloc();
rpc.type = method;
rpc.data = arg;
return this.transport.send(this.schemas, rpc).then(this._handleResponse, (reason) => {
this.logger.exception(reason);
});
};
}
}
exports.MuRPCClient = MuRPCClient;
//# sourceMappingURL=client.js.map