aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/python/grpcio
diff options
context:
space:
mode:
Diffstat (limited to 'src/python/grpcio')
-rw-r--r--src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi10
-rw-r--r--src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi1
-rw-r--r--src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi4
-rw-r--r--src/python/grpcio/grpc/_interceptor.py91
-rw-r--r--src/python/grpcio/grpc_core_dependencies.py2
5 files changed, 68 insertions, 40 deletions
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi
index 6ee833697d..30253fc20c 100644
--- a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi
@@ -276,15 +276,10 @@ cdef extern from "grpc/grpc.h":
uint8_t is_set
grpc_compression_level level
- ctypedef struct grpc_op_send_initial_metadata_maybe_stream_compression_level:
- uint8_t is_set
- grpc_stream_compression_level level
-
ctypedef struct grpc_op_data_send_initial_metadata:
size_t count
grpc_metadata *metadata
grpc_op_send_initial_metadata_maybe_compression_level maybe_compression_level
- grpc_op_send_initial_metadata_maybe_stream_compression_level maybe_stream_compression_level
ctypedef struct grpc_op_data_send_status_from_server:
size_t trailing_metadata_count
@@ -562,8 +557,9 @@ cdef extern from "grpc/compression.h":
ctypedef enum grpc_compression_algorithm:
GRPC_COMPRESS_NONE
- GRPC_COMPRESS_DEFLATE
- GRPC_COMPRESS_GZIP
+ GRPC_COMPRESS_MESSAGE_DEFLATE
+ GRPC_COMPRESS_MESSAGE_GZIP
+ GRPC_COMPRESS_STREAM_GZIP
GRPC_COMPRESS_ALGORITHMS_COUNT
ctypedef enum grpc_compression_level:
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi
index 3c91abf722..239d0f3f95 100644
--- a/src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi
@@ -40,7 +40,6 @@ cdef class SendInitialMetadataOperation(Operation):
self.c_op.data.send_initial_metadata.metadata = self._c_initial_metadata
self.c_op.data.send_initial_metadata.count = self._c_initial_metadata_count
self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0
- self.c_op.data.send_initial_metadata.maybe_stream_compression_level.is_set = 0
cdef void un_c(self):
_release_c_metadata(
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi
index b2343b53d6..f9d4171283 100644
--- a/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi
@@ -112,8 +112,8 @@ class OperationType:
class CompressionAlgorithm:
none = GRPC_COMPRESS_NONE
- deflate = GRPC_COMPRESS_DEFLATE
- gzip = GRPC_COMPRESS_GZIP
+ deflate = GRPC_COMPRESS_MESSAGE_DEFLATE
+ gzip = GRPC_COMPRESS_MESSAGE_GZIP
class CompressionLevel:
diff --git a/src/python/grpcio/grpc/_interceptor.py b/src/python/grpcio/grpc/_interceptor.py
index 56a280624f..d029472c68 100644
--- a/src/python/grpcio/grpc/_interceptor.py
+++ b/src/python/grpcio/grpc/_interceptor.py
@@ -51,6 +51,30 @@ class _ClientCallDetails(
pass
+def _unwrap_client_call_details(call_details, default_details):
+ try:
+ method = call_details.method
+ except AttributeError:
+ method = default_details.method
+
+ try:
+ timeout = call_details.timeout
+ except AttributeError:
+ timeout = default_details.timeout
+
+ try:
+ metadata = call_details.metadata
+ except AttributeError:
+ metadata = default_details.metadata
+
+ try:
+ credentials = call_details.credentials
+ except AttributeError:
+ credentials = default_details.credentials
+
+ return method, timeout, metadata, credentials
+
+
class _LocalFailure(grpc.RpcError, grpc.Future, grpc.Call):
def __init__(self, exception, traceback):
@@ -126,15 +150,18 @@ class _UnaryUnaryMultiCallable(grpc.UnaryUnaryMultiCallable):
def future(self, request, timeout=None, metadata=None, credentials=None):
- def continuation(client_call_details, request):
- return self._thunk(client_call_details.method).future(
- request,
- timeout=client_call_details.timeout,
- metadata=client_call_details.metadata,
- credentials=client_call_details.credentials)
-
client_call_details = _ClientCallDetails(self._method, timeout,
metadata, credentials)
+
+ def continuation(new_details, request):
+ new_method, new_timeout, new_metadata, new_credentials = (
+ _unwrap_client_call_details(new_details, client_call_details))
+ return self._thunk(new_method).future(
+ request,
+ timeout=new_timeout,
+ metadata=new_metadata,
+ credentials=new_credentials)
+
try:
return self._interceptor.intercept_unary_unary(
continuation, client_call_details, request)
@@ -150,16 +177,18 @@ class _UnaryStreamMultiCallable(grpc.UnaryStreamMultiCallable):
self._interceptor = interceptor
def __call__(self, request, timeout=None, metadata=None, credentials=None):
+ client_call_details = _ClientCallDetails(self._method, timeout,
+ metadata, credentials)
- def continuation(client_call_details, request):
- return self._thunk(client_call_details.method)(
+ def continuation(new_details, request):
+ new_method, new_timeout, new_metadata, new_credentials = (
+ _unwrap_client_call_details(new_details, client_call_details))
+ return self._thunk(new_method)(
request,
- timeout=client_call_details.timeout,
- metadata=client_call_details.metadata,
- credentials=client_call_details.credentials)
+ timeout=new_timeout,
+ metadata=new_metadata,
+ credentials=new_credentials)
- client_call_details = _ClientCallDetails(self._method, timeout,
- metadata, credentials)
try:
return self._interceptor.intercept_unary_stream(
continuation, client_call_details, request)
@@ -203,17 +232,18 @@ class _StreamUnaryMultiCallable(grpc.StreamUnaryMultiCallable):
timeout=None,
metadata=None,
credentials=None):
-
- def continuation(client_call_details, request_iterator):
- return self._thunk(client_call_details.method).future(
- request_iterator,
- timeout=client_call_details.timeout,
- metadata=client_call_details.metadata,
- credentials=client_call_details.credentials)
-
client_call_details = _ClientCallDetails(self._method, timeout,
metadata, credentials)
+ def continuation(new_details, request_iterator):
+ new_method, new_timeout, new_metadata, new_credentials = (
+ _unwrap_client_call_details(new_details, client_call_details))
+ return self._thunk(new_method).future(
+ request_iterator,
+ timeout=new_timeout,
+ metadata=new_metadata,
+ credentials=new_credentials)
+
try:
return self._interceptor.intercept_stream_unary(
continuation, client_call_details, request_iterator)
@@ -233,17 +263,18 @@ class _StreamStreamMultiCallable(grpc.StreamStreamMultiCallable):
timeout=None,
metadata=None,
credentials=None):
-
- def continuation(client_call_details, request_iterator):
- return self._thunk(client_call_details.method)(
- request_iterator,
- timeout=client_call_details.timeout,
- metadata=client_call_details.metadata,
- credentials=client_call_details.credentials)
-
client_call_details = _ClientCallDetails(self._method, timeout,
metadata, credentials)
+ def continuation(new_details, request_iterator):
+ new_method, new_timeout, new_metadata, new_credentials = (
+ _unwrap_client_call_details(new_details, client_call_details))
+ return self._thunk(new_method)(
+ request_iterator,
+ timeout=new_timeout,
+ metadata=new_metadata,
+ credentials=new_credentials)
+
try:
return self._interceptor.intercept_stream_stream(
continuation, client_call_details, request_iterator)
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 9debb22249..86122f909c 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -69,6 +69,8 @@ CORE_SOURCE_FILES = [
'src/core/lib/channel/handshaker_factory.cc',
'src/core/lib/channel/handshaker_registry.cc',
'src/core/lib/compression/compression.cc',
+ 'src/core/lib/compression/compression_internal.cc',
+ 'src/core/lib/compression/compression_ruby.cc',
'src/core/lib/compression/message_compress.cc',
'src/core/lib/compression/stream_compression.cc',
'src/core/lib/compression/stream_compression_gzip.cc',