mirror of https://github.com/grpc/grpc-dart.git
Merge 878b0de5ad
into aebb65cbf2
This commit is contained in:
commit
7aa59ebf0a
|
@ -31,6 +31,7 @@ import 'service.dart';
|
||||||
|
|
||||||
typedef ServiceLookup = Service? Function(String service);
|
typedef ServiceLookup = Service? Function(String service);
|
||||||
typedef GrpcErrorHandler = void Function(GrpcError error, StackTrace? trace);
|
typedef GrpcErrorHandler = void Function(GrpcError error, StackTrace? trace);
|
||||||
|
typedef GrpcErrorTransformer = GrpcError? Function(GrpcError error, StackTrace? trace);
|
||||||
|
|
||||||
/// Handles an incoming gRPC call.
|
/// Handles an incoming gRPC call.
|
||||||
class ServerHandler extends ServiceCall {
|
class ServerHandler extends ServiceCall {
|
||||||
|
@ -40,6 +41,7 @@ class ServerHandler extends ServiceCall {
|
||||||
final List<ServerInterceptor> _serverInterceptors;
|
final List<ServerInterceptor> _serverInterceptors;
|
||||||
final CodecRegistry? _codecRegistry;
|
final CodecRegistry? _codecRegistry;
|
||||||
final GrpcErrorHandler? _errorHandler;
|
final GrpcErrorHandler? _errorHandler;
|
||||||
|
final GrpcErrorTransformer? _errorTransformer;
|
||||||
|
|
||||||
// ignore: cancel_subscriptions
|
// ignore: cancel_subscriptions
|
||||||
StreamSubscription<GrpcMessage>? _incomingSubscription;
|
StreamSubscription<GrpcMessage>? _incomingSubscription;
|
||||||
|
@ -89,6 +91,7 @@ class ServerHandler extends ServiceCall {
|
||||||
X509Certificate? clientCertificate,
|
X509Certificate? clientCertificate,
|
||||||
InternetAddress? remoteAddress,
|
InternetAddress? remoteAddress,
|
||||||
GrpcErrorHandler? errorHandler,
|
GrpcErrorHandler? errorHandler,
|
||||||
|
GrpcErrorTransformer? errorTransformer,
|
||||||
this.onDataReceived,
|
this.onDataReceived,
|
||||||
}) : _stream = stream,
|
}) : _stream = stream,
|
||||||
_serviceLookup = serviceLookup,
|
_serviceLookup = serviceLookup,
|
||||||
|
@ -97,6 +100,7 @@ class ServerHandler extends ServiceCall {
|
||||||
_clientCertificate = clientCertificate,
|
_clientCertificate = clientCertificate,
|
||||||
_remoteAddress = remoteAddress,
|
_remoteAddress = remoteAddress,
|
||||||
_errorHandler = errorHandler,
|
_errorHandler = errorHandler,
|
||||||
|
_errorTransformer = errorTransformer,
|
||||||
_serverInterceptors = serverInterceptors;
|
_serverInterceptors = serverInterceptors;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -458,6 +462,7 @@ class ServerHandler extends ServiceCall {
|
||||||
|
|
||||||
void _sendError(GrpcError error, [StackTrace? trace]) {
|
void _sendError(GrpcError error, [StackTrace? trace]) {
|
||||||
_errorHandler?.call(error, trace);
|
_errorHandler?.call(error, trace);
|
||||||
|
error = _errorTransformer?.call(error, trace) ?? error;
|
||||||
|
|
||||||
sendTrailers(
|
sendTrailers(
|
||||||
status: error.code,
|
status: error.code,
|
||||||
|
|
|
@ -90,6 +90,7 @@ class ConnectionServer {
|
||||||
final List<ServerInterceptor> _serverInterceptors;
|
final List<ServerInterceptor> _serverInterceptors;
|
||||||
final CodecRegistry? _codecRegistry;
|
final CodecRegistry? _codecRegistry;
|
||||||
final GrpcErrorHandler? _errorHandler;
|
final GrpcErrorHandler? _errorHandler;
|
||||||
|
final GrpcErrorTransformer? _errorTransformer;
|
||||||
final ServerKeepAliveOptions _keepAliveOptions;
|
final ServerKeepAliveOptions _keepAliveOptions;
|
||||||
|
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
|
@ -104,11 +105,13 @@ class ConnectionServer {
|
||||||
List<ServerInterceptor> serverInterceptors = const <ServerInterceptor>[],
|
List<ServerInterceptor> serverInterceptors = const <ServerInterceptor>[],
|
||||||
CodecRegistry? codecRegistry,
|
CodecRegistry? codecRegistry,
|
||||||
GrpcErrorHandler? errorHandler,
|
GrpcErrorHandler? errorHandler,
|
||||||
|
GrpcErrorTransformer? errorTransformer,
|
||||||
this._keepAliveOptions = const ServerKeepAliveOptions(),
|
this._keepAliveOptions = const ServerKeepAliveOptions(),
|
||||||
]) : _codecRegistry = codecRegistry,
|
]) : _codecRegistry = codecRegistry,
|
||||||
_interceptors = interceptors,
|
_interceptors = interceptors,
|
||||||
_serverInterceptors = serverInterceptors,
|
_serverInterceptors = serverInterceptors,
|
||||||
_errorHandler = errorHandler {
|
_errorHandler = errorHandler,
|
||||||
|
_errorTransformer = errorTransformer {
|
||||||
for (final service in services) {
|
for (final service in services) {
|
||||||
_services[service.$name] = service;
|
_services[service.$name] = service;
|
||||||
}
|
}
|
||||||
|
@ -197,6 +200,7 @@ class Server extends ConnectionServer {
|
||||||
super.interceptors,
|
super.interceptors,
|
||||||
super.codecRegistry,
|
super.codecRegistry,
|
||||||
super.errorHandler,
|
super.errorHandler,
|
||||||
|
super.errorTransformer,
|
||||||
super.keepAlive,
|
super.keepAlive,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -208,12 +212,14 @@ class Server extends ConnectionServer {
|
||||||
List<ServerInterceptor> serverInterceptors = const <ServerInterceptor>[],
|
List<ServerInterceptor> serverInterceptors = const <ServerInterceptor>[],
|
||||||
CodecRegistry? codecRegistry,
|
CodecRegistry? codecRegistry,
|
||||||
GrpcErrorHandler? errorHandler,
|
GrpcErrorHandler? errorHandler,
|
||||||
|
GrpcErrorTransformer? errorTransformer,
|
||||||
}) : super(
|
}) : super(
|
||||||
services,
|
services,
|
||||||
interceptors,
|
interceptors,
|
||||||
serverInterceptors,
|
serverInterceptors,
|
||||||
codecRegistry,
|
codecRegistry,
|
||||||
errorHandler,
|
errorHandler,
|
||||||
|
errorTransformer,
|
||||||
keepAliveOptions,
|
keepAliveOptions,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -321,6 +327,7 @@ class Server extends ConnectionServer {
|
||||||
// ignore: unnecessary_cast
|
// ignore: unnecessary_cast
|
||||||
remoteAddress: remoteAddress as io_bits.InternetAddress?,
|
remoteAddress: remoteAddress as io_bits.InternetAddress?,
|
||||||
errorHandler: _errorHandler,
|
errorHandler: _errorHandler,
|
||||||
|
errorTransformer: _errorTransformer,
|
||||||
onDataReceived: onDataReceived,
|
onDataReceived: onDataReceived,
|
||||||
)..handle();
|
)..handle();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue