rsocket-rpc-frames
Version:
RSocket JavaScript RPC Frames Definitions
128 lines (96 loc) • 4.26 kB
JavaScript
/**
* Copyright (c) 2017-present, Netifi Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*
*/
;
/* eslint-disable consistent-return, no-bitwise */
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.TRACING_LENGTH_SIZE = exports.METHOD_LENGTH_SIZE = exports.SERVICE_LENGTH_SIZE = exports.VERSION_SIZE = exports.VERSION = undefined;
exports.encodeMetadata = encodeMetadata;
exports.getVersion = getVersion;
exports.getService = getService;
exports.getMethod = getMethod;
exports.getTracing = getTracing;
exports.getMetadata = getMetadata;
var _rsocketCore = require('rsocket-core');
/**
* Version
*/
var VERSION = exports.VERSION = 1;
var VERSION_SIZE = exports.VERSION_SIZE = 2;
var SERVICE_LENGTH_SIZE = exports.SERVICE_LENGTH_SIZE = 2;
var METHOD_LENGTH_SIZE = exports.METHOD_LENGTH_SIZE = 2;
var TRACING_LENGTH_SIZE = exports.TRACING_LENGTH_SIZE = 2;
function encodeMetadata(service, method, tracing, metadata) {
var serviceLength = _rsocketCore.UTF8Encoder.byteLength(service);
var methodLength = _rsocketCore.UTF8Encoder.byteLength(method);
var metadataLength = _rsocketCore.BufferEncoder.byteLength(metadata);
// We can't overload the method call directly and the code generator currently only populates
// the first 3 parameters
if (undefined === tracing) {
tracing = (0, _rsocketCore.createBuffer)(0);
}
var tracingLength = _rsocketCore.BufferEncoder.byteLength(tracing);
var buffer = (0, _rsocketCore.createBuffer)(VERSION_SIZE + SERVICE_LENGTH_SIZE + serviceLength + METHOD_LENGTH_SIZE + methodLength + TRACING_LENGTH_SIZE + tracingLength + metadataLength);
var offset = buffer.writeUInt16BE(VERSION, 0);
offset = buffer.writeUInt16BE(serviceLength, offset);
offset = _rsocketCore.UTF8Encoder.encode(service, buffer, offset, offset + serviceLength);
offset = buffer.writeUInt16BE(methodLength, offset);
offset = _rsocketCore.UTF8Encoder.encode(method, buffer, offset, offset + methodLength);
offset = buffer.writeUInt16BE(tracingLength, offset);
offset = _rsocketCore.BufferEncoder.encode(tracing, buffer, offset, offset + tracingLength);
_rsocketCore.BufferEncoder.encode(metadata, buffer, offset, offset + metadataLength);
return buffer;
}
function getVersion(buffer) {
return buffer.readUInt16BE(0);
}
function getService(buffer) {
var offset = VERSION_SIZE;
var serviceLength = buffer.readUInt16BE(offset);
offset += SERVICE_LENGTH_SIZE;
return _rsocketCore.UTF8Encoder.decode(buffer, offset, offset + serviceLength);
}
function getMethod(buffer) {
var offset = VERSION_SIZE;
var serviceLength = buffer.readUInt16BE(offset);
offset += SERVICE_LENGTH_SIZE + serviceLength;
var methodLength = buffer.readUInt16BE(offset);
offset += METHOD_LENGTH_SIZE;
return _rsocketCore.UTF8Encoder.decode(buffer, offset, offset + methodLength);
}
function getTracing(buffer) {
var offset = VERSION_SIZE;
var serviceLength = buffer.readUInt16BE(offset);
offset += SERVICE_LENGTH_SIZE + serviceLength;
var methodLength = buffer.readUInt16BE(offset);
offset += METHOD_LENGTH_SIZE + methodLength;
var tracingLength = buffer.readUInt16BE(offset);
offset += TRACING_LENGTH_SIZE;
return _rsocketCore.BufferEncoder.decode(buffer, offset, offset + tracingLength);
}
function getMetadata(buffer) {
var offset = VERSION_SIZE;
var serviceLength = buffer.readUInt16BE(offset);
offset += SERVICE_LENGTH_SIZE + serviceLength;
var methodLength = buffer.readUInt16BE(offset);
offset += METHOD_LENGTH_SIZE + methodLength;
var tracingLength = buffer.readUInt16BE(offset);
offset += TRACING_LENGTH_SIZE + tracingLength;
return _rsocketCore.BufferEncoder.decode(buffer, offset, buffer.length);
}