encodeSetupFrame static method

Uint8List encodeSetupFrame(
  1. int keepAliveInterval,
  2. int keepAliveMaxLifetime,
  3. String metadataMimeType,
  4. String dataMimeType,
  5. Payload? setupPayload,
)

Implementation

static Uint8List encodeSetupFrame(
    int keepAliveInterval,
    int keepAliveMaxLifetime,
    String metadataMimeType,
    String dataMimeType,
    Payload? setupPayload) {
  var frameBuffer = RSocketByteBuffer();
  frameBuffer.writeI24(0); // frame length
  frameBuffer.writeI32(0); //stream id
  //frame type with metadata indicator without resume token and lease
  writeTFrameTypeAndFlags(
      frameBuffer, frame_types.SETUP, setupPayload?.metadata, 0);
  frameBuffer.writeI16(MAJOR_VERSION);
  frameBuffer.writeI16(MINOR_VERSION);
  frameBuffer.writeI32(keepAliveInterval);
  frameBuffer.writeI32(keepAliveMaxLifetime);
  //Metadata Encoding MIME Type
  frameBuffer.writeI8(metadataMimeType.length);
  frameBuffer.writeBytes(utf8.encode(metadataMimeType));
  //Data Encoding MIME Type
  frameBuffer.writeI8(dataMimeType.length);
  frameBuffer.writeBytes(utf8.encode(dataMimeType));
  // Metadata & Setup Payload
  writePayload(frameBuffer, setupPayload);
  // refill frame length
  refillFrameLength(frameBuffer);
  return frameBuffer.toUint8Array();
}