proteus-js-client
Version:
Proteus JavaScript Client
91 lines (75 loc) • 3.33 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.encodeFrame = encodeFrame;
exports.decodeFrame = decodeFrame;
var _Frame = require('./Frame');
var _FrameHeaderFlyweight = require('./FrameHeaderFlyweight');
var _BrokerSetupFlyweight = require('./BrokerSetupFlyweight');
var _DestinationSetupFlyweight = require('./DestinationSetupFlyweight');
var _GroupFlyweight = require('./GroupFlyweight');
var _BroadcastFlyweight = require('./BroadcastFlyweight');
var _ShardFlyweight = require('./ShardFlyweight');
var _invariant = require('fbjs/lib/invariant');
var _invariant2 = _interopRequireDefault(_invariant);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Convert the frame to a (binary) buffer.
*/
function encodeFrame(frame) {
switch (frame.type) {
case _Frame.FrameTypes.BROKER_SETUP:
return (0, _BrokerSetupFlyweight.encodeBrokerSetupFrame)(frame);
case _Frame.FrameTypes.DESTINATION_SETUP:
return (0, _DestinationSetupFlyweight.encodeDestinationSetupFrame)(frame);
case _Frame.FrameTypes.GROUP:
return (0, _GroupFlyweight.encodeGroupFrame)(frame);
case _Frame.FrameTypes.BROADCAST:
return (0, _BroadcastFlyweight.encodeBroadcastFrame)(frame);
case _Frame.FrameTypes.SHARD:
return (0, _ShardFlyweight.encodeShardFrame)(frame);
default:
(0, _invariant2.default)(false, 'ProteusBinaryFraming: Unsupported frame type `%s`.', (0, _Frame.getFrameTypeName)(frame.type));
}
}
/**
* Read a frame from the buffer.
*/
function decodeFrame(buffer) {
var majorVersion = (0, _FrameHeaderFlyweight.getMajorVersion)(buffer);
var minorVersion = (0, _FrameHeaderFlyweight.getMinorVersion)(buffer);
var type = (0, _FrameHeaderFlyweight.getFrameType)(buffer);
switch (type) {
case _Frame.FrameTypes.BROKER_SETUP:
return (0, _BrokerSetupFlyweight.decodeBrokerSetupFrame)(buffer, majorVersion, minorVersion);
case _Frame.FrameTypes.DESTINATION_SETUP:
return (0, _DestinationSetupFlyweight.decodeDestinationSetupFrame)(buffer, majorVersion, minorVersion);
case _Frame.FrameTypes.GROUP:
return (0, _GroupFlyweight.decodeGroupFrame)(buffer, majorVersion, minorVersion);
case _Frame.FrameTypes.BROADCAST:
return (0, _BroadcastFlyweight.decodeBroadcastFrame)(buffer, majorVersion, minorVersion);
case _Frame.FrameTypes.SHARD:
return (0, _ShardFlyweight.decodeShardFrame)(buffer, majorVersion, minorVersion);
default:
(0, _invariant2.default)(false, 'ProteusBinaryFraming: Unsupported frame type `%s`.', (0, _Frame.getFrameTypeName)(type));
}
}