UNPKG

diffusion

Version:

Diffusion JavaScript client

51 lines (41 loc) 1.33 kB
var DetailType = require('../../../client/session-details').DetailType; var ClientLocationSerialiser = require('./client-location-serialiser'); var ClientSummarySerialiser = require('./client-summary-serialiser'); var Codec = require('io/codec'); function nextOption(bis) { var r = Codec.readByte(bis); if (r === 1) { return true; } else if (r === 0) { return false; } else { throw new Error('Invalid option byte: ' + r); } } module.exports = { read : function(bis) { var details = { available : [] }; if (!nextOption(bis)) { return details; } if (nextOption(bis)) { details.available.push(DetailType.SUMMARY); details.summary = ClientSummarySerialiser.read(bis); } if (nextOption(bis)) { details.available.push(DetailType.LOCATION); details.location = ClientLocationSerialiser.read(bis); } if (nextOption(bis)) { details.available.push(DetailType.CONNECTOR_NAME); details.connector = Codec.readString(bis); } if (nextOption(bis)) { details.available.push(DetailType.SERVER_NAME); details.server = Codec.readString(bis); } return details; } };