aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib/compression
diff options
context:
space:
mode:
authorGravatar Muxi Yan <mxyan@google.com>2017-12-08 14:02:18 -0800
committerGravatar Muxi Yan <mxyan@google.com>2017-12-08 14:02:18 -0800
commit99024d64367b62c98f03dda5c800c7418bcbf123 (patch)
treec1fdbd9705d483107279770f2860342405ae2bbd /src/core/lib/compression
parent5c5bafff5a7974b54cb16cbf2222580bc0349e77 (diff)
parent94e676e10f8c739289924b8458a246699e3623ce (diff)
Merge remote-tracking branch 'upstream/master' into fix-stream-compression-config-interface
Diffstat (limited to 'src/core/lib/compression')
-rw-r--r--src/core/lib/compression/compression.cc10
-rw-r--r--src/core/lib/compression/message_compress.cc42
-rw-r--r--src/core/lib/compression/message_compress.h6
-rw-r--r--src/core/lib/compression/stream_compression_gzip.cc20
4 files changed, 36 insertions, 42 deletions
diff --git a/src/core/lib/compression/compression.cc b/src/core/lib/compression/compression.cc
index a5b123b4e2..99e6014b23 100644
--- a/src/core/lib/compression/compression.cc
+++ b/src/core/lib/compression/compression.cc
@@ -91,11 +91,11 @@ grpc_compression_algorithm grpc_compression_algorithm_for_level(
// TODO(mxyan): Design algorithm to select from all algorithms, including
// stream compression algorithm
if (!grpc_compression_algorithm_from_message_stream_compression_algorithm(
- &algo,
- grpc_message_compression_algorithm_for_level(
- level,
- grpc_compression_bitset_to_message_bitset(accepted_encodings)),
- static_cast<grpc_stream_compression_algorithm>(0))){
+ &algo,
+ grpc_message_compression_algorithm_for_level(
+ level,
+ grpc_compression_bitset_to_message_bitset(accepted_encodings)),
+ static_cast<grpc_stream_compression_algorithm>(0))) {
gpr_log(GPR_ERROR, "Parse compression level error");
return GRPC_COMPRESS_NONE;
}
diff --git a/src/core/lib/compression/message_compress.cc b/src/core/lib/compression/message_compress.cc
index d174992355..1e9b0f10ee 100644
--- a/src/core/lib/compression/message_compress.cc
+++ b/src/core/lib/compression/message_compress.cc
@@ -29,8 +29,8 @@
#define OUTPUT_BLOCK_SIZE 1024
-static int zlib_body(grpc_exec_ctx* exec_ctx, z_stream* zs,
- grpc_slice_buffer* input, grpc_slice_buffer* output,
+static int zlib_body(z_stream* zs, grpc_slice_buffer* input,
+ grpc_slice_buffer* output,
int (*flate)(z_stream* zs, int flush)) {
int r;
int flush;
@@ -74,7 +74,7 @@ static int zlib_body(grpc_exec_ctx* exec_ctx, z_stream* zs,
return 1;
error:
- grpc_slice_unref_internal(exec_ctx, outbuf);
+ grpc_slice_unref_internal(outbuf);
return 0;
}
@@ -84,8 +84,8 @@ static void* zalloc_gpr(void* opaque, unsigned int items, unsigned int size) {
static void zfree_gpr(void* opaque, void* address) { gpr_free(address); }
-static int zlib_compress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input,
- grpc_slice_buffer* output, int gzip) {
+static int zlib_compress(grpc_slice_buffer* input, grpc_slice_buffer* output,
+ int gzip) {
z_stream zs;
int r;
size_t i;
@@ -97,11 +97,10 @@ static int zlib_compress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input,
r = deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, 15 | (gzip ? 16 : 0),
8, Z_DEFAULT_STRATEGY);
GPR_ASSERT(r == Z_OK);
- r = zlib_body(exec_ctx, &zs, input, output, deflate) &&
- output->length < input->length;
+ r = zlib_body(&zs, input, output, deflate) && output->length < input->length;
if (!r) {
for (i = count_before; i < output->count; i++) {
- grpc_slice_unref_internal(exec_ctx, output->slices[i]);
+ grpc_slice_unref_internal(output->slices[i]);
}
output->count = count_before;
output->length = length_before;
@@ -110,8 +109,8 @@ static int zlib_compress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input,
return r;
}
-static int zlib_decompress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input,
- grpc_slice_buffer* output, int gzip) {
+static int zlib_decompress(grpc_slice_buffer* input, grpc_slice_buffer* output,
+ int gzip) {
z_stream zs;
int r;
size_t i;
@@ -122,10 +121,10 @@ static int zlib_decompress(grpc_exec_ctx* exec_ctx, grpc_slice_buffer* input,
zs.zfree = zfree_gpr;
r = inflateInit2(&zs, 15 | (gzip ? 16 : 0));
GPR_ASSERT(r == Z_OK);
- r = zlib_body(exec_ctx, &zs, input, output, inflate);
+ r = zlib_body(&zs, input, output, inflate);
if (!r) {
for (i = count_before; i < output->count; i++) {
- grpc_slice_unref_internal(exec_ctx, output->slices[i]);
+ grpc_slice_unref_internal(output->slices[i]);
}
output->count = count_before;
output->length = length_before;
@@ -142,8 +141,7 @@ static int copy(grpc_slice_buffer* input, grpc_slice_buffer* output) {
return 1;
}
-static int compress_inner(grpc_exec_ctx* exec_ctx,
- grpc_message_compression_algorithm algorithm,
+static int compress_inner(grpc_message_compression_algorithm algorithm,
grpc_slice_buffer* input, grpc_slice_buffer* output) {
switch (algorithm) {
case GRPC_MESSAGE_COMPRESS_NONE:
@@ -151,9 +149,9 @@ static int compress_inner(grpc_exec_ctx* exec_ctx,
rely on that here */
return 0;
case GRPC_MESSAGE_COMPRESS_DEFLATE:
- return zlib_compress(exec_ctx, input, output, 0);
+ return zlib_compress(input, output, 0);
case GRPC_MESSAGE_COMPRESS_GZIP:
- return zlib_compress(exec_ctx, input, output, 1);
+ return zlib_compress(input, output, 1);
case GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT:
break;
}
@@ -161,26 +159,24 @@ static int compress_inner(grpc_exec_ctx* exec_ctx,
return 0;
}
-int grpc_msg_compress(grpc_exec_ctx* exec_ctx,
- grpc_message_compression_algorithm algorithm,
+int grpc_msg_compress(grpc_message_compression_algorithm algorithm,
grpc_slice_buffer* input, grpc_slice_buffer* output) {
- if (!compress_inner(exec_ctx, algorithm, input, output)) {
+ if (!compress_inner(algorithm, input, output)) {
copy(input, output);
return 0;
}
return 1;
}
-int grpc_msg_decompress(grpc_exec_ctx* exec_ctx,
- grpc_message_compression_algorithm algorithm,
+int grpc_msg_decompress(grpc_message_compression_algorithm algorithm,
grpc_slice_buffer* input, grpc_slice_buffer* output) {
switch (algorithm) {
case GRPC_MESSAGE_COMPRESS_NONE:
return copy(input, output);
case GRPC_MESSAGE_COMPRESS_DEFLATE:
- return zlib_decompress(exec_ctx, input, output, 0);
+ return zlib_decompress(input, output, 0);
case GRPC_MESSAGE_COMPRESS_GZIP:
- return zlib_decompress(exec_ctx, input, output, 1);
+ return zlib_decompress(input, output, 1);
case GRPC_MESSAGE_COMPRESS_ALGORITHMS_COUNT:
break;
}
diff --git a/src/core/lib/compression/message_compress.h b/src/core/lib/compression/message_compress.h
index 2882bf7075..ed9e5bfa39 100644
--- a/src/core/lib/compression/message_compress.h
+++ b/src/core/lib/compression/message_compress.h
@@ -26,15 +26,13 @@
/* compress 'input' to 'output' using 'algorithm'.
On success, appends compressed slices to output and returns 1.
On failure, appends uncompressed slices to output and returns 0. */
-int grpc_msg_compress(grpc_exec_ctx* exec_ctx,
- grpc_message_compression_algorithm algorithm,
+int grpc_msg_compress(grpc_message_compression_algorithm algorithm,
grpc_slice_buffer* input, grpc_slice_buffer* output);
/* decompress 'input' to 'output' using 'algorithm'.
On success, appends slices to output and returns 1.
On failure, output is unchanged, and returns 0. */
-int grpc_msg_decompress(grpc_exec_ctx* exec_ctx,
- grpc_message_compression_algorithm algorithm,
+int grpc_msg_decompress(grpc_message_compression_algorithm algorithm,
grpc_slice_buffer* input, grpc_slice_buffer* output);
#endif /* GRPC_CORE_LIB_COMPRESSION_MESSAGE_COMPRESS_H */
diff --git a/src/core/lib/compression/stream_compression_gzip.cc b/src/core/lib/compression/stream_compression_gzip.cc
index 0c3fdd1269..9d829b31db 100644
--- a/src/core/lib/compression/stream_compression_gzip.cc
+++ b/src/core/lib/compression/stream_compression_gzip.cc
@@ -40,7 +40,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx,
/* Full flush is not allowed when inflating. */
GPR_ASSERT(!(ctx->flate == inflate && (flush == Z_FINISH)));
- grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_core::ExecCtx exec_ctx;
int r;
bool eoc = false;
size_t original_max_output_size = max_output_size;
@@ -57,8 +57,8 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx,
r = ctx->flate(&ctx->zs, Z_NO_FLUSH);
if (r < 0 && r != Z_BUF_ERROR) {
gpr_log(GPR_ERROR, "zlib error (%d)", r);
- grpc_slice_unref_internal(&exec_ctx, slice_out);
- grpc_exec_ctx_finish(&exec_ctx);
+ grpc_slice_unref_internal(slice_out);
+
return false;
} else if (r == Z_STREAM_END && ctx->flate == inflate) {
eoc = true;
@@ -69,7 +69,7 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx,
grpc_slice_sub(slice, GRPC_SLICE_LENGTH(slice) - ctx->zs.avail_in,
GRPC_SLICE_LENGTH(slice)));
}
- grpc_slice_unref_internal(&exec_ctx, slice);
+ grpc_slice_unref_internal(slice);
}
if (flush != 0 && ctx->zs.avail_out > 0 && !eoc) {
GPR_ASSERT(in->length == 0);
@@ -88,8 +88,8 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx,
break;
default:
gpr_log(GPR_ERROR, "zlib error (%d)", r);
- grpc_slice_unref_internal(&exec_ctx, slice_out);
- grpc_exec_ctx_finish(&exec_ctx);
+ grpc_slice_unref_internal(slice_out);
+
return false;
}
} else if (flush == Z_FINISH) {
@@ -104,8 +104,8 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx,
break;
default:
gpr_log(GPR_ERROR, "zlib error (%d)", r);
- grpc_slice_unref_internal(&exec_ctx, slice_out);
- grpc_exec_ctx_finish(&exec_ctx);
+ grpc_slice_unref_internal(slice_out);
+
return false;
}
}
@@ -117,11 +117,11 @@ static bool gzip_flate(grpc_stream_compression_context_gzip* ctx,
slice_out.data.refcounted.length -= ctx->zs.avail_out;
grpc_slice_buffer_add(out, slice_out);
} else {
- grpc_slice_unref_internal(&exec_ctx, slice_out);
+ grpc_slice_unref_internal(slice_out);
}
max_output_size -= (slice_size - ctx->zs.avail_out);
}
- grpc_exec_ctx_finish(&exec_ctx);
+
if (end_of_context) {
*end_of_context = eoc;
}