1 //
2 //
3 // Copyright 2015 gRPC authors.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 //
18 
19 #include <grpc/support/port_platform.h>
20 
21 #include "src/core/ext/transport/chttp2/alpn/alpn.h"
22 
23 #include <grpc/support/log.h>
24 
25 #include "src/core/lib/gpr/useful.h"
26 
27 // in order of preference
28 static const char* const supported_versions[] = {"grpc-exp", "h2"};
29 
grpc_chttp2_is_alpn_version_supported(const char * version,size_t size)30 int grpc_chttp2_is_alpn_version_supported(const char* version, size_t size) {
31   size_t i;
32   for (i = 0; i < GPR_ARRAY_SIZE(supported_versions); i++) {
33     if (!strncmp(version, supported_versions[i], size)) return 1;
34   }
35   return 0;
36 }
37 
grpc_chttp2_num_alpn_versions(void)38 size_t grpc_chttp2_num_alpn_versions(void) {
39   return GPR_ARRAY_SIZE(supported_versions);
40 }
41 
grpc_chttp2_get_alpn_version_index(size_t i)42 const char* grpc_chttp2_get_alpn_version_index(size_t i) {
43   GPR_ASSERT(i < GPR_ARRAY_SIZE(supported_versions));
44   return supported_versions[i];
45 }
46