serialize static method

Uint8List serialize(
  1. StompFrame frame
)

Serializes a STOMP frame to bytes

Implementation

static Uint8List serialize(StompFrame frame) {
  frame.validate();

  final buffer = <int>[];

  // Add command
  buffer.addAll(utf8.encode(frame.command));
  buffer.add(StompConstants.lineFeed);

  // Add headers
  for (final entry in frame.headers.entries) {
    buffer.addAll(utf8.encode(entry.key));
    buffer.add(58); // ':'

    final value = _shouldEscapeHeaders(frame.command)
        ? StompEscaping.escape(entry.value)
        : entry.value;
    buffer.addAll(utf8.encode(value));
    buffer.add(StompConstants.lineFeed);
  }

  // Add empty line to separate headers from body
  buffer.add(StompConstants.lineFeed);

  // Add body
  if (frame.body != null) {
    buffer.addAll(frame.body!);
  }

  // Add NULL terminator
  buffer.add(StompConstants.nullByte);

  return Uint8List.fromList(buffer);
}