GRPC C++ 0.10.0.0

- Main Page
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
proto_utils.h
Go to the documentation of this file.
1 /*
2 *
3 * Copyright 2015, Google Inc.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following disclaimer
14 * in the documentation and/or other materials provided with the
15 * distribution.
16 * * Neither the name of Google Inc. nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 */
33
34 #ifndef GRPC_INTERNAL_CPP_PROTO_PROTO_UTILS_H
35 #define GRPC_INTERNAL_CPP_PROTO_PROTO_UTILS_H
36
37 #include <type_traits>
38
39 #include <grpc/grpc.h>
40 #include <grpc++/impl/serialization_traits.h>
41 #include <grpc++/config_protobuf.h>
42 #include <grpc++/status.h>
43
44 namespace grpc {
45
46 // Serialize the msg into a buffer created inside the function. The caller
47 // should destroy the returned buffer when done with it. If serialization fails,
48 // false is returned and buffer is left unchanged.
49 Status SerializeProto(const grpc::protobuf::Message& msg,
50 grpc_byte_buffer** buffer);
51
52 // The caller keeps ownership of buffer and msg.
53 Status DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg,
54 int max_message_size);
55
56 template <class T>
57 class SerializationTraits<T, typename std::enable_if<std::is_base_of<
58 grpc::protobuf::Message, T>::value>::type> {
59 public:
60 static Status Serialize(const grpc::protobuf::Message& msg,
61 grpc_byte_buffer** buffer, bool* own_buffer) {
62 *own_buffer = true;
63 return SerializeProto(msg, buffer);
64 }
65 static Status Deserialize(grpc_byte_buffer* buffer,
66 grpc::protobuf::Message* msg,
67 int max_message_size) {
68 auto status = DeserializeProto(buffer, msg, max_message_size);
69 grpc_byte_buffer_destroy(buffer);
70 return status;
71 }
72 };
73
74 } // namespace grpc
75
76 #endif // GRPC_INTERNAL_CPP_PROTO_PROTO_UTILS_H
grpc::SerializationTraits< T, typename std::enable_if< std::is_base_of< grpc::protobuf::Message, T >::value >::type >::Serialize
static Status Serialize(const grpc::protobuf::Message &msg, grpc_byte_buffer **buffer, bool *own_buffer)
Definition: proto_utils.h:60
grpc::SerializationTraits< T, typename std::enable_if< std::is_base_of< grpc::protobuf::Message, T >::value >::type >::Deserialize
static Status Deserialize(grpc_byte_buffer *buffer, grpc::protobuf::Message *msg, int max_message_size)
Definition: proto_utils.h:65
serialization_traits.h
grpc::DeserializeProto
Status DeserializeProto(grpc_byte_buffer *buffer, grpc::protobuf::Message *msg, int max_message_size)
Definition: proto_utils.cc:165
grpc::SerializationTraits
Defines how to serialize and deserialize some type.
Definition: serialization_traits.h:64
grpc::SerializeProto
Status SerializeProto(const grpc::protobuf::Message &msg, grpc_byte_buffer **buffer)
Definition: proto_utils.cc:157
config_protobuf.h
status.h
grpc::Status
Definition: status.h:42
grpc::protobuf::Message
::google::protobuf::Message Message
Definition: config_protobuf.h:60