encodeNavigation method

Uint8List encodeNavigation(
  1. RitoNavigationRequest request
)

Encodes a RITONVQ1 navigation request.

Implementation

Uint8List encodeNavigation(RitoNavigationRequest request) {
  final writer = _Writer.message(ascii.encode('RITONVQ1'), 1);
  writer.externalId(request.sessionId, 'session id');
  switch (request.query) {
    case RitoTocEntryAtPageQuery(:final artifactId, :final pageIndex):
      writer.uint8(0);
      writer.externalId(artifactId, 'artifact id');
      writer.uint32(pageIndex, 'page index');
    case RitoTocEntryAtPositionQuery(:final href, :final point):
      writer.uint8(1);
      writer.string(href, 'position href');
      _sourcePointRecord(writer, point);
    case RitoLocateQuery(:final artifactId, :final locator):
      writer.uint8(2);
      writer.externalId(artifactId, 'artifact id');
      writer.record((writer) => _locator(writer, locator));
    case final RitoCompareQuery query:
      writer.uint8(3);
      writer.string(query.firstHref, 'first href');
      _sourcePointRecord(writer, query.first);
      writer.string(query.secondHref, 'second href');
      _sourcePointRecord(writer, query.second);
    case RitoLayoutQuery(:final artifactId, :final whole):
      writer.uint8(4);
      writer.externalId(artifactId, 'artifact id');
      writer.boolean(whole);
  }
  return writer.finish();
}