// Copyright 2018 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_HANDLE_SERIALIZATION_H_ #define MOJO_PUBLIC_CPP_BINDINGS_LIB_HANDLE_SERIALIZATION_H_ #include "mojo/public/cpp/bindings/lib/bindings_internal.h" #include "mojo/public/cpp/bindings/lib/serialization_context.h" #include "mojo/public/cpp/bindings/lib/serialization_forward.h" #include "mojo/public/cpp/system/handle.h" namespace mojo { namespace internal { template <typename T> struct Serializer<ScopedHandleBase<T>, ScopedHandleBase<T>> { static void Serialize(ScopedHandleBase<T>& input, Handle_Data* output, SerializationContext* context) { context->AddHandle(ScopedHandle::From(std::move(input)), output); } static bool Deserialize(Handle_Data* input, ScopedHandleBase<T>* output, SerializationContext* context) { *output = context->TakeHandleAs<T>(*input); return true; } }; } // namespace internal } // namespace mojo #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_HANDLE_SERIALIZATION_H_