from static method

Future<StreamMetadataResult> from(
  1. String name,
  2. ResponseStream<ReadResp> resultStream
)

Implementation

static Future<StreamMetadataResult> from(
  String name,
  ResponseStream<ReadResp> resultStream,
) async {
  final result = await resultStream.toList();
  if (result.isEmpty) {
    return StreamMetadataResult._(
      streamId: name,
      state: ReadState.ok,
      metadataStreamPosition: StreamPosition.start,
    );
  }
  final resp = result.last;
  switch (resp.whichContent()) {
    case ReadResp_Content.event:
      final event = convertToResolvedEvent(
        resp.event,
      );
      return StreamMetadataResult._(
        streamId: name,
        state: ReadState.ok,
        metadata: convertToMetadata(event),
        metadataStreamPosition: event.originalEventNumber,
      );
    case ReadResp_Content.streamNotFound:
      return StreamMetadataResult._(
        streamId: utf8.decode(
          resp.streamNotFound.streamIdentifier.streamName,
        ),
        state: ReadState.stream_not_found,
      );
    case ReadResp_Content.confirmation:
    case ReadResp_Content.checkpoint:
    case ReadResp_Content.notSet:
    default:
      throw UnsupportedError('ReadResp $result is unsupported');
  }
}