transport_security_common_api.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2018 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 
20 
22 
23 #include "upb/upb.hpp"
24 
26  grpc_gcp_rpc_protocol_versions* versions, uint32_t max_major,
27  uint32_t max_minor) {
28  if (versions == nullptr) {
30  "versions is nullptr in "
31  "grpc_gcp_rpc_protocol_versions_set_max().");
32  return false;
33  }
34  versions->max_rpc_version.major = max_major;
35  versions->max_rpc_version.minor = max_minor;
36  return true;
37 }
38 
40  grpc_gcp_rpc_protocol_versions* versions, uint32_t min_major,
41  uint32_t min_minor) {
42  if (versions == nullptr) {
44  "versions is nullptr in "
45  "grpc_gcp_rpc_protocol_versions_set_min().");
46  return false;
47  }
48  versions->min_rpc_version.major = min_major;
49  versions->min_rpc_version.minor = min_minor;
50  return true;
51 }
52 
55  if (versions == nullptr || slice == nullptr) {
57  "Invalid nullptr arguments to "
58  "grpc_gcp_rpc_protocol_versions_encode().");
59  return false;
60  }
62  grpc_gcp_RpcProtocolVersions* versions_msg =
65  versions);
66  return grpc_gcp_rpc_protocol_versions_encode(versions_msg, arena.ptr(),
67  slice);
68 }
69 
72  grpc_slice* slice) {
73  if (versions == nullptr || arena == nullptr || slice == nullptr) {
75  "Invalid nullptr arguments to "
76  "grpc_gcp_rpc_protocol_versions_encode().");
77  return false;
78  }
79  size_t buf_length;
80  char* buf =
81  grpc_gcp_RpcProtocolVersions_serialize(versions, arena, &buf_length);
82  if (buf == nullptr) {
83  return false;
84  }
85  *slice = grpc_slice_from_copied_buffer(buf, buf_length);
86  return true;
87 }
88 
91  if (versions == nullptr) {
93  "version is nullptr in "
94  "grpc_gcp_rpc_protocol_versions_decode().");
95  return false;
96  }
98  grpc_gcp_RpcProtocolVersions* versions_msg =
100  reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(slice)),
101  GRPC_SLICE_LENGTH(slice), arena.ptr());
102  if (versions_msg == nullptr) {
103  gpr_log(GPR_ERROR, "cannot deserialize RpcProtocolVersions message");
104  return false;
105  }
106  grpc_gcp_rpc_protocol_versions_assign_from_upb(versions, versions_msg);
107  return true;
108 }
109 
113  const grpc_gcp_RpcProtocolVersions_Version* max_version_msg =
115  if (max_version_msg != nullptr) {
116  versions->max_rpc_version.major =
118  versions->max_rpc_version.minor =
120  } else {
121  versions->max_rpc_version.major = 0;
122  versions->max_rpc_version.minor = 0;
123  }
124  const grpc_gcp_RpcProtocolVersions_Version* min_version_msg =
126  if (min_version_msg != nullptr) {
127  versions->min_rpc_version.major =
129  versions->min_rpc_version.minor =
131  } else {
132  versions->min_rpc_version.major = 0;
133  versions->min_rpc_version.minor = 0;
134  }
135 }
136 
140  grpc_gcp_RpcProtocolVersions_Version* max_version_msg =
143  value->max_rpc_version.major);
145  value->max_rpc_version.minor);
146  grpc_gcp_RpcProtocolVersions_Version* min_version_msg =
149  value->min_rpc_version.major);
151  value->min_rpc_version.minor);
152 }
153 
157  if ((src == nullptr && dst != nullptr) ||
158  (src != nullptr && dst == nullptr)) {
160  "Invalid arguments to "
161  "grpc_gcp_rpc_protocol_versions_copy().");
162  return false;
163  }
164  if (src == nullptr) {
165  return true;
166  }
168  src->max_rpc_version.minor);
170  src->min_rpc_version.minor);
171  return true;
172 }
173 
174 namespace grpc_core {
175 namespace internal {
176 
180  if ((v1->major > v2->major) ||
181  (v1->major == v2->major && v1->minor > v2->minor)) {
182  return 1;
183  }
184  if ((v1->major < v2->major) ||
185  (v1->major == v2->major && v1->minor < v2->minor)) {
186  return -1;
187  }
188  return 0;
189 }
190 
191 } // namespace internal
192 } // namespace grpc_core
193 
195  const grpc_gcp_rpc_protocol_versions* local_versions,
196  const grpc_gcp_rpc_protocol_versions* peer_versions,
197  grpc_gcp_rpc_protocol_versions_version* highest_common_version) {
198  if (local_versions == nullptr || peer_versions == nullptr) {
200  "Invalid arguments to "
201  "grpc_gcp_rpc_protocol_versions_check().");
202  return false;
203  }
204  /* max_common_version is MIN(local.max, peer.max) */
205  const grpc_gcp_rpc_protocol_versions_version* max_common_version =
207  &local_versions->max_rpc_version, &peer_versions->max_rpc_version) > 0
208  ? &peer_versions->max_rpc_version
209  : &local_versions->max_rpc_version;
210  /* min_common_version is MAX(local.min, peer.min) */
211  const grpc_gcp_rpc_protocol_versions_version* min_common_version =
213  &local_versions->min_rpc_version, &peer_versions->min_rpc_version) > 0
214  ? &local_versions->min_rpc_version
215  : &peer_versions->min_rpc_version;
217  max_common_version, min_common_version) >= 0;
218  if (result && highest_common_version != nullptr) {
219  memcpy(highest_common_version, max_common_version,
221  }
222  return result;
223 }
_gevent_test_main.result
result
Definition: _gevent_test_main.py:96
dst
static const char dst[]
Definition: test-fs-copyfile.c:37
grpc_gcp_RpcProtocolVersions_Version
struct grpc_gcp_RpcProtocolVersions_Version grpc_gcp_RpcProtocolVersions_Version
Definition: transport_security_common.upb.h:26
grpc_gcp_rpc_protocol_versions_assign_from_upb
void grpc_gcp_rpc_protocol_versions_assign_from_upb(grpc_gcp_rpc_protocol_versions *versions, const grpc_gcp_RpcProtocolVersions *value)
Definition: transport_security_common_api.cc:110
grpc_core
Definition: call_metric_recorder.h:31
grpc_gcp_RpcProtocolVersions_mutable_min_rpc_version
UPB_INLINE struct grpc_gcp_RpcProtocolVersions_Version * grpc_gcp_RpcProtocolVersions_mutable_min_rpc_version(grpc_gcp_RpcProtocolVersions *msg, upb_Arena *arena)
Definition: transport_security_common.upb.h:105
buf
voidpf void * buf
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
grpc_gcp_RpcProtocolVersions_assign_from_struct
void grpc_gcp_RpcProtocolVersions_assign_from_struct(grpc_gcp_RpcProtocolVersions *versions, upb_Arena *arena, const grpc_gcp_rpc_protocol_versions *value)
Definition: transport_security_common_api.cc:137
grpc_gcp_RpcProtocolVersions_new
UPB_INLINE grpc_gcp_RpcProtocolVersions * grpc_gcp_RpcProtocolVersions_new(upb_Arena *arena)
Definition: transport_security_common.upb.h:40
_grpc_gcp_RpcProtocolVersions::max_rpc_version
grpc_gcp_rpc_protocol_versions_version max_rpc_version
Definition: transport_security_common_api.h:39
grpc_gcp_rpc_protocol_versions_decode
bool grpc_gcp_rpc_protocol_versions_decode(const grpc_slice &slice, grpc_gcp_rpc_protocol_versions *versions)
Definition: transport_security_common_api.cc:89
arena
grpc_core::ScopedArenaPtr arena
Definition: binder_transport_test.cc:237
grpc_gcp_rpc_protocol_versions_encode
bool grpc_gcp_rpc_protocol_versions_encode(const grpc_gcp_rpc_protocol_versions *versions, grpc_slice *slice)
Definition: transport_security_common_api.cc:53
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
memcpy
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
grpc_gcp_RpcProtocolVersions_max_rpc_version
const UPB_INLINE grpc_gcp_RpcProtocolVersions_Version * grpc_gcp_RpcProtocolVersions_max_rpc_version(const grpc_gcp_RpcProtocolVersions *msg)
Definition: transport_security_common.upb.h:75
slice
grpc_slice slice
Definition: src/core/lib/surface/server.cc:467
grpc_gcp_RpcProtocolVersions_Version_major
UPB_INLINE uint32_t grpc_gcp_RpcProtocolVersions_Version_major(const grpc_gcp_RpcProtocolVersions_Version *msg)
Definition: transport_security_common.upb.h:149
gpr_log
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
grpc_gcp_RpcProtocolVersions_Version_minor
UPB_INLINE uint32_t grpc_gcp_RpcProtocolVersions_Version_minor(const grpc_gcp_RpcProtocolVersions_Version *msg)
Definition: transport_security_common.upb.h:155
grpc_gcp_RpcProtocolVersions_mutable_max_rpc_version
UPB_INLINE struct grpc_gcp_RpcProtocolVersions_Version * grpc_gcp_RpcProtocolVersions_mutable_max_rpc_version(grpc_gcp_RpcProtocolVersions *msg, upb_Arena *arena)
Definition: transport_security_common.upb.h:92
GRPC_SLICE_START_PTR
#define GRPC_SLICE_START_PTR(slice)
Definition: include/grpc/impl/codegen/slice.h:101
grpc_slice
Definition: include/grpc/impl/codegen/slice.h:65
grpc_gcp_RpcProtocolVersions_parse
UPB_INLINE grpc_gcp_RpcProtocolVersions * grpc_gcp_RpcProtocolVersions_parse(const char *buf, size_t size, upb_Arena *arena)
Definition: transport_security_common.upb.h:43
GPR_ERROR
#define GPR_ERROR
Definition: include/grpc/impl/codegen/log.h:57
grpc_gcp_rpc_protocol_versions_check
bool grpc_gcp_rpc_protocol_versions_check(const grpc_gcp_rpc_protocol_versions *local_versions, const grpc_gcp_rpc_protocol_versions *peer_versions, grpc_gcp_rpc_protocol_versions_version *highest_common_version)
Definition: transport_security_common_api.cc:194
grpc_gcp_RpcProtocolVersions
struct grpc_gcp_RpcProtocolVersions grpc_gcp_RpcProtocolVersions
Definition: transport_security_common.upb.h:25
grpc_gcp_rpc_protocol_versions_set_min
bool grpc_gcp_rpc_protocol_versions_set_min(grpc_gcp_rpc_protocol_versions *versions, uint32_t min_major, uint32_t min_minor)
Definition: transport_security_common_api.cc:39
_grpc_gcp_RpcProtocolVersions_Version::major
uint32_t major
Definition: transport_security_common_api.h:33
_grpc_gcp_RpcProtocolVersions::min_rpc_version
grpc_gcp_rpc_protocol_versions_version min_rpc_version
Definition: transport_security_common_api.h:40
GRPC_SLICE_LENGTH
#define GRPC_SLICE_LENGTH(slice)
Definition: include/grpc/impl/codegen/slice.h:104
grpc_core::internal::grpc_gcp_rpc_protocol_version_compare
int grpc_gcp_rpc_protocol_version_compare(const grpc_gcp_rpc_protocol_versions_version *v1, const grpc_gcp_rpc_protocol_versions_version *v2)
Definition: transport_security_common_api.cc:177
value
const char * value
Definition: hpack_parser_table.cc:165
_grpc_gcp_RpcProtocolVersions_Version::minor
uint32_t minor
Definition: transport_security_common_api.h:34
upb::Arena
Definition: upb.hpp:68
grpc_slice_from_copied_buffer
GPRAPI grpc_slice grpc_slice_from_copied_buffer(const char *source, size_t len)
Definition: slice/slice.cc:170
upb.hpp
transport_security_common_api.h
grpc_gcp_rpc_protocol_versions_copy
bool grpc_gcp_rpc_protocol_versions_copy(const grpc_gcp_rpc_protocol_versions *src, grpc_gcp_rpc_protocol_versions *dst)
Definition: transport_security_common_api.cc:154
grpc_gcp_RpcProtocolVersions_Version_set_major
UPB_INLINE void grpc_gcp_RpcProtocolVersions_Version_set_major(grpc_gcp_RpcProtocolVersions_Version *msg, uint32_t value)
Definition: transport_security_common.upb.h:159
grpc_gcp_RpcProtocolVersions_Version_set_minor
UPB_INLINE void grpc_gcp_RpcProtocolVersions_Version_set_minor(grpc_gcp_RpcProtocolVersions_Version *msg, uint32_t value)
Definition: transport_security_common.upb.h:162
grpc_gcp_rpc_protocol_versions_set_max
bool grpc_gcp_rpc_protocol_versions_set_max(grpc_gcp_rpc_protocol_versions *versions, uint32_t max_major, uint32_t max_minor)
Definition: transport_security_common_api.cc:25
internal
Definition: benchmark/test/output_test_helper.cc:20
_grpc_gcp_RpcProtocolVersions_Version
Definition: transport_security_common_api.h:32
_grpc_gcp_RpcProtocolVersions
Definition: transport_security_common_api.h:38
upb_Arena
Definition: upb_internal.h:36
grpc_gcp_RpcProtocolVersions_min_rpc_version
const UPB_INLINE grpc_gcp_RpcProtocolVersions_Version * grpc_gcp_RpcProtocolVersions_min_rpc_version(const grpc_gcp_RpcProtocolVersions *msg)
Definition: transport_security_common.upb.h:84
grpc_gcp_RpcProtocolVersions_serialize
UPB_INLINE char * grpc_gcp_RpcProtocolVersions_serialize(const grpc_gcp_RpcProtocolVersions *msg, upb_Arena *arena, size_t *len)
Definition: transport_security_common.upb.h:62
port_platform.h


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:40