in foreign/node/src/wire/user/permissions.utils.ts [71:143]
ManageStreams: toBool(p.readUInt8(pos + 4)),
ReadStreams: toBool(p.readUInt8(pos + 5)),
ManageTopics: toBool(p.readUInt8(pos + 6)),
ReadTopics: toBool(p.readUInt8(pos + 7)),
PollMessages: toBool(p.readUInt8(pos + 8)),
SendMessages: toBool(p.readUInt8(pos + 9)),
}
};
};
export const serializeGlobalPermission = (p: GlobalPermissions) => {
return Buffer.concat([
uint8ToBuf(boolToByte(p.ManageServers)),
uint8ToBuf(boolToByte(p.ReadServers)),
uint8ToBuf(boolToByte(p.ManageUsers)),
uint8ToBuf(boolToByte(p.ReadUsers)),
uint8ToBuf(boolToByte(p.ManageStreams)),
uint8ToBuf(boolToByte(p.ReadStreams)),
uint8ToBuf(boolToByte(p.ManageTopics)),
uint8ToBuf(boolToByte(p.ReadTopics)),
uint8ToBuf(boolToByte(p.PollMessages)),
uint8ToBuf(boolToByte(p.SendMessages)),
]);
}
export const deserializeTopicPermissions =
(p: Buffer, pos = 0): TopicPermissionsDeserialized => {
const topicId = p.readUInt32LE(pos);
const permissions = {
manage: toBool(p.readUInt8(pos + 4)),
read: toBool(p.readUInt8(pos + 5)),
pollMessages: toBool(p.readUInt8(pos + 6)),
sendMessages: toBool(p.readUInt8(pos + 7)),
};
return {
bytesRead: 8,
topicId,
permissions
}
};
export const serializeTopicPermissions = (p: TopicPerms) => {
return Buffer.concat([
uint32ToBuf(p.topicId),
uint8ToBuf(boolToByte(p.permissions.manage)),
uint8ToBuf(boolToByte(p.permissions.read)),
uint8ToBuf(boolToByte(p.permissions.pollMessages)),
uint8ToBuf(boolToByte(p.permissions.sendMessages)),
]);
};
export const deserializeStreamPermissions =
(p: Buffer, pos = 0): StreamPermissionsDeserialized => {
const start = pos;
const streamId = p.readUInt32LE(pos);
const permissions = {
manageStream: toBool(p.readUInt8(pos + 4)),
readStream: toBool(p.readUInt8(pos + 5)),
manageTopics: toBool(p.readUInt8(pos + 6)),
readTopics: toBool(p.readUInt8(pos + 7)),
pollMessages: toBool(p.readUInt8(pos + 8)),
sendMessages: toBool(p.readUInt8(pos + 9)),
}
pos += 10;
const topics = [];
const hasTopics = toBool(p.readUInt8(pos));
if (hasTopics) {
let read = true;
pos += 1;
while (read) {