Skip to content
Snippets Groups Projects
Commit e29feb2a authored by David Garcia Quintas's avatar David Garcia Quintas
Browse files

Introduced compression levels as an abstraction for the actual algorithm.

parent 0d6cf992
No related branches found
No related tags found
Loading
...@@ -34,6 +34,9 @@ ...@@ -34,6 +34,9 @@
#ifndef GRPC_COMPRESSION_H #ifndef GRPC_COMPRESSION_H
#define GRPC_COMPRESSION_H #define GRPC_COMPRESSION_H
/** To be used in channel arguments */
#define GRPC_COMPRESSION_LEVEL_ARG "grpc.compression_level"
/* The various compression algorithms supported by GRPC */ /* The various compression algorithms supported by GRPC */
typedef enum { typedef enum {
GRPC_COMPRESS_NONE = 0, GRPC_COMPRESS_NONE = 0,
...@@ -43,7 +46,17 @@ typedef enum { ...@@ -43,7 +46,17 @@ typedef enum {
GRPC_COMPRESS_ALGORITHMS_COUNT GRPC_COMPRESS_ALGORITHMS_COUNT
} grpc_compression_algorithm; } grpc_compression_algorithm;
typedef enum {
GRPC_COMPRESS_LEVEL_NONE = 0,
GRPC_COMPRESS_LEVEL_LOW,
GRPC_COMPRESS_LEVEL_MED,
GRPC_COMPRESS_LEVEL_HIGH
} grpc_compression_level;
const char *grpc_compression_algorithm_name( const char *grpc_compression_algorithm_name(
grpc_compression_algorithm algorithm); grpc_compression_algorithm algorithm);
grpc_compression_algorithm grpc_compression_algorithm_for_level(
grpc_compression_level level);
#endif /* GRPC_COMPRESSION_H */ #endif /* GRPC_COMPRESSION_H */
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
* *
*/ */
#include <stdlib.h>
#include <grpc/compression.h> #include <grpc/compression.h>
const char *grpc_compression_algorithm_name( const char *grpc_compression_algorithm_name(
...@@ -47,3 +48,21 @@ const char *grpc_compression_algorithm_name( ...@@ -47,3 +48,21 @@ const char *grpc_compression_algorithm_name(
} }
return "error"; return "error";
} }
/* TODO(dgq): Add the ability to specify parameters to the individual
* compression algorithms */
grpc_compression_algorithm grpc_compression_algorithm_for_level(
grpc_compression_level level) {
switch (level) {
case GRPC_COMPRESS_NONE:
return GRPC_COMPRESS_NONE;
case GRPC_COMPRESS_LEVEL_LOW:
case GRPC_COMPRESS_LEVEL_MED:
return GRPC_COMPRESS_DEFLATE;
case GRPC_COMPRESS_LEVEL_HIGH:
return GRPC_COMPRESS_GZIP;
default:
/* we shouldn't be making it here */
abort();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment