UNPKG

rsocket-rpc-frames

Version:

RSocket JavaScript RPC Frames Definitions

128 lines (96 loc) 4.26 kB
/** * 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. * * */ 'use strict'; /* 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); }