|
11 | 11 | from collections.abc import Mapping |
12 | 12 | from dataclasses import dataclass, field |
13 | 13 | from datetime import timedelta |
14 | | -from enum import Enum, IntEnum |
| 14 | +from enum import IntEnum |
15 | 15 | from typing import ClassVar, TypeVar |
16 | 16 |
|
17 | 17 | import google.protobuf.message |
@@ -158,15 +158,39 @@ def _to_bridge_config( |
158 | 158 | DnsLoadBalancingConfig.default = DnsLoadBalancingConfig() |
159 | 159 |
|
160 | 160 |
|
161 | | -class GrpcCompression(Enum): |
162 | | - """Transport-level gRPC compression mode.""" |
| 161 | +class GrpcCompression(ABC): |
| 162 | + """Transport-level gRPC compression mode. |
163 | 163 |
|
164 | | - NONE = "none" |
| 164 | + This is a base type for concrete compression modes. Current modes are |
| 165 | + available as singleton constants on this class. |
| 166 | + """ |
| 167 | + |
| 168 | + NONE: ClassVar[GrpcCompression] |
165 | 169 | """Do not compress gRPC requests or advertise support for compressed responses.""" |
166 | 170 |
|
167 | | - GZIP = "gzip" |
| 171 | + GZIP: ClassVar[GrpcCompression] |
168 | 172 | """Gzip-compress gRPC requests and accept gzip-compressed responses.""" |
169 | 173 |
|
| 174 | + @abstractmethod |
| 175 | + def _to_bridge_config(self) -> str: |
| 176 | + raise NotImplementedError |
| 177 | + |
| 178 | + |
| 179 | +@dataclass(frozen=True) |
| 180 | +class _NoGrpcCompression(GrpcCompression): |
| 181 | + def _to_bridge_config(self) -> str: |
| 182 | + return "none" |
| 183 | + |
| 184 | + |
| 185 | +@dataclass(frozen=True) |
| 186 | +class _GzipGrpcCompression(GrpcCompression): |
| 187 | + def _to_bridge_config(self) -> str: |
| 188 | + return "gzip" |
| 189 | + |
| 190 | + |
| 191 | +GrpcCompression.NONE = _NoGrpcCompression() |
| 192 | +GrpcCompression.GZIP = _GzipGrpcCompression() |
| 193 | + |
170 | 194 |
|
171 | 195 | @dataclass |
172 | 196 | class ConnectConfig: |
@@ -246,7 +270,7 @@ def _to_bridge_config(self) -> temporalio.bridge.client.ClientConfig: |
246 | 270 | if self.dns_load_balancing_config |
247 | 271 | else None |
248 | 272 | ), |
249 | | - grpc_compression=self.grpc_compression.value, |
| 273 | + grpc_compression=self.grpc_compression._to_bridge_config(), |
250 | 274 | ) |
251 | 275 |
|
252 | 276 |
|
|
0 commit comments