diff options
author | Muxi Yan <mxyan@google.com> | 2017-10-11 16:46:17 -0700 |
---|---|---|
committer | Muxi Yan <mxyan@google.com> | 2017-10-11 16:57:11 -0700 |
commit | e720a184303c77ff13eec654b25e5974cb88d917 (patch) | |
tree | 06a7eca7a3e2704b83bb27c2b8523eb59d474ef2 /src/core/lib/compression | |
parent | 4c7bc85bd824ddeb2216961e0280e9017442c17b (diff) |
Add ruby-specific compression name conversion API
Diffstat (limited to 'src/core/lib/compression')
-rw-r--r-- | src/core/lib/compression/compression_ruby.cc | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/core/lib/compression/compression_ruby.cc b/src/core/lib/compression/compression_ruby.cc new file mode 100644 index 0000000000..ebe05203e8 --- /dev/null +++ b/src/core/lib/compression/compression_ruby.cc @@ -0,0 +1,66 @@ +/* + * + * Copyright 2017 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include <grpc/compression_ruby.h> +#include <grpc/support/useful.h> + +#include "src/core/lib/surface/api_trace.h" +#include "src/core/lib/transport/static_metadata.h" + +int grpc_compression_algorithm_parse_ruby( + grpc_slice name, grpc_compression_algorithm *algorithm) { + if (grpc_slice_eq(name, GRPC_MDSTR_IDENTITY)) { + *algorithm = GRPC_COMPRESS_NONE; + return 1; + } else if (grpc_slice_eq(name, GRPC_MDSTR_DEFLATE)) { + *algorithm = GRPC_COMPRESS_MESSAGE_DEFLATE; + return 1; + } else if (grpc_slice_eq(name, GRPC_MDSTR_GZIP)) { + *algorithm = GRPC_COMPRESS_MESSAGE_GZIP; + return 1; + } else if (grpc_slice_eq(name, GRPC_MDSTR_STREAM_SLASH_GZIP)) { + *algorithm = GRPC_COMPRESS_STREAM_GZIP; + return 1; + } else { + return 0; + } + return 0; +} + +int grpc_compression_algorithm_name_ruby(grpc_compression_algorithm algorithm, + const char **name) { + GRPC_API_TRACE("grpc_compression_algorithm_parse(algorithm=%d, name=%p)", 2, + ((int)algorithm, name)); + switch (algorithm) { + case GRPC_COMPRESS_NONE: + *name = "identity"; + return 1; + case GRPC_COMPRESS_MESSAGE_DEFLATE: + *name = "deflate"; + return 1; + case GRPC_COMPRESS_MESSAGE_GZIP: + *name = "gzip"; + return 1; + case GRPC_COMPRESS_STREAM_GZIP: + *name = "stream/gzip"; + return 1; + case GRPC_COMPRESS_ALGORITHMS_COUNT: + return 0; + } + return 0; +} |