Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1782)

Unified Diff: mojo/public/cpp/bindings/lib/native_struct_serialization.h

Issue 1955123003: Mojo C++ bindings: switch the remaining callsites of the old serialization interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@24_union_and_others
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/cpp/bindings/lib/native_struct_serialization.h
diff --git a/mojo/public/cpp/bindings/lib/native_struct_serialization.h b/mojo/public/cpp/bindings/lib/native_struct_serialization.h
index 90927a9e720f47f2dec3c5c61944301b050fd883..d8881844b657d41e3923d1acf281bc429ea504af 100644
--- a/mojo/public/cpp/bindings/lib/native_struct_serialization.h
+++ b/mojo/public/cpp/bindings/lib/native_struct_serialization.h
@@ -18,61 +18,13 @@
#include "mojo/public/cpp/bindings/lib/native_struct_data.h"
#include "mojo/public/cpp/bindings/lib/serialization_forward.h"
#include "mojo/public/cpp/bindings/lib/serialization_util.h"
+#include "mojo/public/cpp/bindings/native_struct.h"
namespace mojo {
namespace internal {
-template <typename MaybeConstUserType,
- bool unmapped = std::is_same<
- NativeStructPtr,
- typename std::remove_const<MaybeConstUserType>::type>::value>
-struct NativeStructSerializerImpl;
-
template <typename MaybeConstUserType>
-struct NativeStructSerializerImpl<MaybeConstUserType, true> {
- static size_t PrepareToSerialize(const NativeStructPtr& input,
- SerializationContext* context) {
- if (!input)
- return 0;
- return internal::PrepareToSerialize<Array<uint8_t>>(input->data, context);
- }
-
- static void Serialize(NativeStructPtr& input,
- Buffer* buffer,
- NativeStruct_Data** output,
- SerializationContext* context) {
- if (!input) {
- *output = nullptr;
- return;
- }
-
- Array_Data<uint8_t>* data = nullptr;
- const ArrayValidateParams params(0, false, nullptr);
- internal::Serialize<Array<uint8_t>>(input->data, buffer, &data, &params,
- context);
- *output = reinterpret_cast<NativeStruct_Data*>(data);
- }
-
- static bool Deserialize(NativeStruct_Data* input,
- NativeStructPtr* output,
- SerializationContext* context) {
- Array_Data<uint8_t>* data = reinterpret_cast<Array_Data<uint8_t>*>(input);
-
- NativeStructPtr result(NativeStruct::New());
- if (!internal::Deserialize<Array<uint8_t>>(data, &result->data, context)) {
- output = nullptr;
- return false;
- }
- if (!result->data)
- *output = nullptr;
- else
- result.Swap(output);
- return true;
- }
-};
-
-template <typename MaybeConstUserType>
-struct NativeStructSerializerImpl<MaybeConstUserType, false> {
+struct NativeStructSerializerImpl {
using UserType = typename std::remove_const<MaybeConstUserType>::type;
using Traits = IPC::ParamTraits<UserType>;
@@ -144,6 +96,26 @@ struct NativeStructSerializerImpl<MaybeConstUserType, false> {
}
};
+struct UnmappedNativeStructSerializerImpl {
+ static size_t PrepareToSerialize(const NativeStructPtr& input,
+ SerializationContext* context);
+ static void Serialize(const NativeStructPtr& input,
+ Buffer* buffer,
+ NativeStruct_Data** output,
+ SerializationContext* context);
+ static bool Deserialize(NativeStruct_Data* input,
+ NativeStructPtr* output,
+ SerializationContext* context);
+};
+
+template <>
+struct NativeStructSerializerImpl<NativeStructPtr>
+ : public UnmappedNativeStructSerializerImpl {};
+
+template <>
+struct NativeStructSerializerImpl<const NativeStructPtr>
+ : public UnmappedNativeStructSerializerImpl {};
+
template <typename MaybeConstUserType>
struct Serializer<NativeStructPtr, MaybeConstUserType>
: public NativeStructSerializerImpl<MaybeConstUserType> {};
« no previous file with comments | « mojo/public/cpp/bindings/lib/control_message_proxy.cc ('k') | mojo/public/cpp/bindings/lib/native_struct_serialization.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698