OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_NATIVE_STRUCT_SERIALIZATION_H_ | 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_NATIVE_STRUCT_SERIALIZATION_H_ |
6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_NATIVE_STRUCT_SERIALIZATION_H_ | 6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_NATIVE_STRUCT_SERIALIZATION_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
11 #include <limits> | 11 #include <limits> |
12 | 12 |
13 #include "base/logging.h" | 13 #include "base/logging.h" |
14 #include "base/pickle.h" | 14 #include "base/pickle.h" |
15 #include "ipc/ipc_param_traits.h" | 15 #include "ipc/ipc_param_traits.h" |
| 16 #include "mojo/public/cpp/bindings/bindings_export.h" |
16 #include "mojo/public/cpp/bindings/lib/array_internal.h" | 17 #include "mojo/public/cpp/bindings/lib/array_internal.h" |
17 #include "mojo/public/cpp/bindings/lib/bindings_internal.h" | 18 #include "mojo/public/cpp/bindings/lib/bindings_internal.h" |
18 #include "mojo/public/cpp/bindings/lib/native_struct_data.h" | 19 #include "mojo/public/cpp/bindings/lib/native_struct_data.h" |
19 #include "mojo/public/cpp/bindings/lib/serialization_forward.h" | 20 #include "mojo/public/cpp/bindings/lib/serialization_forward.h" |
20 #include "mojo/public/cpp/bindings/lib/serialization_util.h" | 21 #include "mojo/public/cpp/bindings/lib/serialization_util.h" |
21 #include "mojo/public/cpp/bindings/native_struct.h" | 22 #include "mojo/public/cpp/bindings/native_struct.h" |
22 #include "mojo/public/cpp/bindings/native_struct_data_view.h" | 23 #include "mojo/public/cpp/bindings/native_struct_data_view.h" |
23 | 24 |
24 namespace mojo { | 25 namespace mojo { |
25 namespace internal { | 26 namespace internal { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 return false; | 97 return false; |
97 } | 98 } |
98 | 99 |
99 // Return the header to its original state. | 100 // Return the header to its original state. |
100 header->num_bytes += sizeof(ArrayHeader); | 101 header->num_bytes += sizeof(ArrayHeader); |
101 | 102 |
102 return true; | 103 return true; |
103 } | 104 } |
104 }; | 105 }; |
105 | 106 |
106 struct UnmappedNativeStructSerializerImpl { | 107 struct MOJO_CPP_BINDINGS_EXPORT UnmappedNativeStructSerializerImpl { |
107 static size_t PrepareToSerialize(const NativeStructPtr& input, | 108 static size_t PrepareToSerialize(const NativeStructPtr& input, |
108 SerializationContext* context); | 109 SerializationContext* context); |
109 static void Serialize(const NativeStructPtr& input, | 110 static void Serialize(const NativeStructPtr& input, |
110 Buffer* buffer, | 111 Buffer* buffer, |
111 NativeStruct_Data** output, | 112 NativeStruct_Data** output, |
112 SerializationContext* context); | 113 SerializationContext* context); |
113 static bool Deserialize(NativeStruct_Data* input, | 114 static bool Deserialize(NativeStruct_Data* input, |
114 NativeStructPtr* output, | 115 NativeStructPtr* output, |
115 SerializationContext* context); | 116 SerializationContext* context); |
116 }; | 117 }; |
117 | 118 |
118 template <> | 119 template <> |
119 struct NativeStructSerializerImpl<NativeStructPtr> | 120 struct NativeStructSerializerImpl<NativeStructPtr> |
120 : public UnmappedNativeStructSerializerImpl {}; | 121 : public UnmappedNativeStructSerializerImpl {}; |
121 | 122 |
122 template <> | 123 template <> |
123 struct NativeStructSerializerImpl<const NativeStructPtr> | 124 struct NativeStructSerializerImpl<const NativeStructPtr> |
124 : public UnmappedNativeStructSerializerImpl {}; | 125 : public UnmappedNativeStructSerializerImpl {}; |
125 | 126 |
126 template <typename MaybeConstUserType> | 127 template <typename MaybeConstUserType> |
127 struct Serializer<NativeStructDataView, MaybeConstUserType> | 128 struct Serializer<NativeStructDataView, MaybeConstUserType> |
128 : public NativeStructSerializerImpl<MaybeConstUserType> {}; | 129 : public NativeStructSerializerImpl<MaybeConstUserType> {}; |
129 | 130 |
130 } // namespace internal | 131 } // namespace internal |
131 } // namespace mojo | 132 } // namespace mojo |
132 | 133 |
133 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_NATIVE_STRUCT_SERIALIZATION_H_ | 134 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_NATIVE_STRUCT_SERIALIZATION_H_ |
OLD | NEW |