aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Muxi Yan <mxyan@google.com>2017-07-08 10:54:46 -0700
committerGravatar Muxi Yan <mxyan@google.com>2017-07-08 10:54:46 -0700
commitfbd06f720297b4e622eabf4d1d8f7cdcbc3fde5a (patch)
tree6998537396bf417265a6d6b351e63157c21235cb
parent4f85558ba829e5ad072f54d58b49de7710ba585c (diff)
Comments and fixes
-rw-r--r--src/core/lib/compression/stream_compression.h13
-rw-r--r--test/core/compression/stream_compression_test.c10
2 files changed, 15 insertions, 8 deletions
diff --git a/src/core/lib/compression/stream_compression.h b/src/core/lib/compression/stream_compression.h
index 41a7b669f7..cf009fdadd 100644
--- a/src/core/lib/compression/stream_compression.h
+++ b/src/core/lib/compression/stream_compression.h
@@ -31,14 +31,15 @@ typedef struct grpc_stream_compression_context {
} grpc_stream_compression_context;
typedef enum grpc_stream_compression_method {
- GRPC_STREAM_COMPRESSION_COMPRESS,
+ GRPC_STREAM_COMPRESSION_COMPRESS = 0,
GRPC_STREAM_COMPRESSION_DECOMPRESS
} grpc_stream_compression_method;
typedef enum grpc_stream_compression_flush {
- GRPC_STREAM_COMPRESSION_FLUSH_NONE,
+ GRPC_STREAM_COMPRESSION_FLUSH_NONE = 0,
GRPC_STREAM_COMPRESSION_FLUSH_SYNC,
- GRPC_STREAM_COMPRESSION_FLUSH_FINISH
+ GRPC_STREAM_COMPRESSION_FLUSH_FINISH,
+ GRPC_STREAM_COMPRESSION_FLUSH_COUNT
} grpc_stream_compression_flush;
/**
@@ -47,6 +48,12 @@ typedef enum grpc_stream_compression_flush {
* into \a out. If all the bytes in input buffer \a in are depleted and \a flush
* is not GRPC_STREAM_COMPRESSION_FLUSH_NONE, the corresponding flush method is
* executed. The total number of bytes emitted is outputed in \a output_size.
+ *
+ * A SYNC flush indicates that the entire messages in \a in can be decompressed
+ * from \a out. A FINISH flush implies a SYNC flush, and that any further
+ * compression will not be dependent on the state of the current context and any
+ * previous compressed bytes. It allows corresponding decompression context to
+ * be dropped when reaching this boundary.
*/
bool grpc_stream_compress(grpc_stream_compression_context *ctx,
grpc_slice_buffer *in, grpc_slice_buffer *out,
diff --git a/test/core/compression/stream_compression_test.c b/test/core/compression/stream_compression_test.c
index e318020245..5c025e96ab 100644
--- a/test/core/compression/stream_compression_test.c
+++ b/test/core/compression/stream_compression_test.c
@@ -72,7 +72,7 @@ static void test_stream_compression_simple_compress_decompress() {
size_t output_size;
GPR_ASSERT(grpc_stream_decompress(decompress_ctx, &relay, &sink, &output_size,
~(size_t)0, &end_of_context));
- GPR_ASSERT(output_size = sizeof(test_str) - 1);
+ GPR_ASSERT(output_size == sizeof(test_str) - 1);
grpc_stream_compression_context_destroy(compress_ctx);
grpc_stream_compression_context_destroy(decompress_ctx);
@@ -107,7 +107,7 @@ test_stream_compression_simple_compress_decompress_with_output_size_constraint()
size_t max_output_size = 2;
GPR_ASSERT(grpc_stream_decompress(decompress_ctx, &relay, &sink, &output_size,
max_output_size, &end_of_context));
- GPR_ASSERT(output_size = max_output_size);
+ GPR_ASSERT(output_size == max_output_size);
GPR_ASSERT(end_of_context == false);
grpc_slice slice_recv = grpc_slice_buffer_take_first(&sink);
char *str_recv = (char *)GRPC_SLICE_START_PTR(slice_recv);
@@ -118,8 +118,8 @@ test_stream_compression_simple_compress_decompress_with_output_size_constraint()
size_t remaining_size = sizeof(test_str) - 1 - max_output_size;
GPR_ASSERT(grpc_stream_decompress(decompress_ctx, &relay, &sink, &output_size,
remaining_size, &end_of_context));
- GPR_ASSERT(output_size = remaining_size);
- GPR_ASSERT(end_of_context = true);
+ GPR_ASSERT(output_size == remaining_size);
+ GPR_ASSERT(end_of_context == true);
GPR_ASSERT(slice_buffer_equals_string(&sink, test_str + max_output_size));
@@ -152,7 +152,7 @@ test_stream_compression_simple_compress_decompress_with_large_data() {
size_t output_size;
GPR_ASSERT(grpc_stream_decompress(decompress_ctx, &relay, &sink, &output_size,
~(size_t)0, &end_of_context));
- GPR_ASSERT(output_size = sizeof(test_str) - 1);
+ GPR_ASSERT(output_size == sizeof(test_str) - 1);
grpc_stream_compression_context_destroy(compress_ctx);
grpc_stream_compression_context_destroy(decompress_ctx);