SetupFrame.fromBuffer constructor
SetupFrame.fromBuffer(
- RSocketHeader header,
- RSocketByteBuffer buffer
Implementation
SetupFrame.fromBuffer(RSocketHeader header, RSocketByteBuffer buffer) {
this.header = header;
var resumeEnable = (header.flags & 0x80) > 0;
leaseEnable = (header.flags & 0x40) > 0;
// ignore: unused_local_variable
var majorVersion = buffer.readI16();
// ignore: unused_local_variable
var minorVersion = buffer.readI16();
var keepAliveInterval = buffer.readI32();
if (keepAliveInterval != null) {
this.keepAliveInterval = keepAliveInterval;
}
var keepAliveMaxLifetime = buffer.readI32();
if (keepAliveMaxLifetime != null) {
this.keepAliveMaxLifetime = keepAliveMaxLifetime;
}
//resume token extraction
if (resumeEnable) {
var resumeTokenLength = buffer.readI16();
if (resumeTokenLength != null) {
var tokenU8Array = buffer.readBytes(resumeTokenLength);
if (tokenU8Array.isNotEmpty) {
resumeToken = utf8.decode(tokenU8Array);
}
}
}
// metadata & data encoding
var metadataMimeTypeLength = buffer.readI8();
if (metadataMimeTypeLength != null) {
var metadataMimeTypeU8Array = buffer.readBytes(metadataMimeTypeLength);
if (metadataMimeTypeU8Array.isNotEmpty) {
metadataMimeType = utf8.decode(metadataMimeTypeU8Array);
}
}
var dataMimeTypeLength = buffer.readI8();
if (dataMimeTypeLength != null) {
var dataMimeTypeU8Array = buffer.readBytes(dataMimeTypeLength);
if (dataMimeTypeU8Array.isNotEmpty) {
dataMimeType = utf8.decode(dataMimeTypeU8Array);
}
}
payload = decodePayload(buffer, header.metaPresent, header.frameLength);
}