| Index: mojo/public/cpp/bindings/lib/native_struct_serialization.cc
|
| diff --git a/mojo/public/cpp/bindings/lib/native_struct_serialization.cc b/mojo/public/cpp/bindings/lib/native_struct_serialization.cc
|
| index 82725993fe09e98223180521731f93b2bfdd5885..fe65f147c619de5834fd444220f1e540909fcca1 100644
|
| --- a/mojo/public/cpp/bindings/lib/native_struct_serialization.cc
|
| +++ b/mojo/public/cpp/bindings/lib/native_struct_serialization.cc
|
| @@ -7,23 +7,53 @@
|
| #include "mojo/public/cpp/bindings/lib/serialization.h"
|
|
|
| namespace mojo {
|
| +namespace internal {
|
|
|
| -size_t GetSerializedSize_(const NativeStructPtr& input,
|
| - internal::SerializationContext* context) {
|
| - return internal::PrepareToSerialize<NativeStructPtr>(input, context);
|
| +// static
|
| +size_t UnmappedNativeStructSerializerImpl::PrepareToSerialize(
|
| + const NativeStructPtr& input,
|
| + SerializationContext* context) {
|
| + if (!input)
|
| + return 0;
|
| + return internal::PrepareToSerialize<Array<uint8_t>>(input->data, context);
|
| }
|
|
|
| -void Serialize_(NativeStructPtr input,
|
| - internal::Buffer* buffer,
|
| - internal::NativeStruct_Data** output,
|
| - internal::SerializationContext* context) {
|
| - internal::Serialize<NativeStructPtr>(input, buffer, output, context);
|
| +// static
|
| +void UnmappedNativeStructSerializerImpl::Serialize(
|
| + const 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, ¶ms,
|
| + context);
|
| + *output = reinterpret_cast<NativeStruct_Data*>(data);
|
| }
|
|
|
| -bool Deserialize_(internal::NativeStruct_Data* input,
|
| - NativeStructPtr* output,
|
| - internal::SerializationContext* context) {
|
| - return internal::Deserialize<NativeStructPtr>(input, output, context);
|
| +// static
|
| +bool UnmappedNativeStructSerializerImpl::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;
|
| }
|
|
|
| +} // namespace internal
|
| } // namespace mojo
|
|
|