Introduced compression levels as an abstraction for the actual algorithm.

pull/2071/head
David Garcia Quintas 10 years ago
parent 0d6cf992e8
commit e29feb2adb
  1. 13
      include/grpc/compression.h
  2. 19
      src/core/compression/algorithm.c

@ -34,6 +34,9 @@
#ifndef 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 */
typedef enum {
GRPC_COMPRESS_NONE = 0,
@ -43,7 +46,17 @@ typedef enum {
GRPC_COMPRESS_ALGORITHMS_COUNT
} 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(
grpc_compression_algorithm algorithm);
grpc_compression_algorithm grpc_compression_algorithm_for_level(
grpc_compression_level level);
#endif /* GRPC_COMPRESSION_H */

@ -31,6 +31,7 @@
*
*/
#include <stdlib.h>
#include <grpc/compression.h>
const char *grpc_compression_algorithm_name(
@ -47,3 +48,21 @@ const char *grpc_compression_algorithm_name(
}
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();
}
}

Loading…
Cancel
Save