encodeSetupFrame static method
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();
}