grpcDecompressor function
Implementation
StreamTransformer<GrpcMessage, GrpcMessage> grpcDecompressor({
CodecRegistry? codecRegistry,
}) {
Codec? codec;
return StreamTransformer<GrpcMessage, GrpcMessage>.fromHandlers(
handleData: (GrpcMessage value, EventSink<GrpcMessage> sink) {
if (value is GrpcData && value.isCompressed) {
if (codec == null) {
sink.addError(
GrpcError.unimplemented('Compression mechanism not supported'),
);
return;
}
sink.add(GrpcData(codec!.decompress(value.data), isCompressed: false));
return;
}
if (value is GrpcMetadata && value.metadata.containsKey('grpc-encoding')) {
codec = codecRegistry?.lookup(value.metadata['grpc-encoding']!);
}
sink.add(value);
});
}