SetupFrame.fromBuffer constructor

SetupFrame.fromBuffer(
  1. RSocketHeader header,
  2. 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);
}