// 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 struct Serializer, ScopedHandleBase> { static void Serialize(ScopedHandleBase& input, Handle_Data* output, SerializationContext* context) { context->AddHandle(ScopedHandle::From(std::move(input)), output); } static bool Deserialize(Handle_Data* input, ScopedHandleBase* output, SerializationContext* context) { *output = context->TakeHandleAs(*input); return true; } }; } // namespace internal } // namespace mojo #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_HANDLE_SERIALIZATION_H_