From c737e3d87e6abf666ba26ac1139aa7197017efed Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 24 Jun 2025 09:59:04 -0700 Subject: [PATCH] simplify hierarchy of ResponseFuture (#791) * simplify hierarchy of ResponseFuture * dartfmt * update changelog --------- Co-authored-by: Moritz --- CHANGELOG.md | 2 ++ lib/src/client/common.dart | 38 ++++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed78eb4..2d265b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ - Require package:http 1.4.0 - Require package:lints 6.0.0 - Require package:protobuf 4.1.0 +- Simplify hierarchy of `ResponseFuture` (no longer have a private class in the + type hierarchy) ## 4.1.0 diff --git a/lib/src/client/common.dart b/lib/src/client/common.dart index 1da4851..df3115f 100644 --- a/lib/src/client/common.dart +++ b/lib/src/client/common.dart @@ -42,9 +42,7 @@ abstract class Response { } /// A gRPC response producing a single value. -class ResponseFuture extends DelegatingFuture - with _ResponseMixin { - @override +class ResponseFuture extends DelegatingFuture implements Response { final ClientCall _call; static R _ensureOnlyOneResponse(R? previous, R element) { @@ -65,21 +63,25 @@ class ResponseFuture extends DelegatingFuture .fold(null, _ensureOnlyOneResponse) .then(_ensureOneResponse), ); -} - -/// A gRPC response producing a stream of values. -class ResponseStream extends StreamView with _ResponseMixin { - @override - final ClientCall _call; - - ResponseStream(this._call) : super(_call.response); - - @override - ResponseFuture get single => ResponseFuture(_call); -} - -mixin _ResponseMixin implements Response { - ClientCall get _call; + + @override + Future> get headers => _call.headers; + + @override + Future> get trailers => _call.trailers; + + @override + Future cancel() => _call.cancel(); +} + +/// A gRPC response producing a stream of values. +class ResponseStream extends StreamView implements Response { + final ClientCall _call; + + ResponseStream(this._call) : super(_call.response); + + @override + ResponseFuture get single => ResponseFuture(_call); @override Future> get headers => _call.headers;