1645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// Copyright 2015 The Chromium Authors. All rights reserved. 2645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// Use of this source code is governed by a BSD-style license that can be 3645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// found in the LICENSE file. 4645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 5645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "ipc/ipc_mojo_param_traits.h" 6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "ipc/ipc_message_utils.h" 8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "ipc/ipc_mojo_message_helper.h" 9645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace IPC { 11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezvoid ParamTraits<mojo::MessagePipeHandle>::GetSize(base::PickleSizer* sizer, 13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez const param_type& p) { 14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez GetParamSize(sizer, p.is_valid()); 15645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if (p.is_valid()) 16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez sizer->AddAttachment(); 17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezvoid ParamTraits<mojo::MessagePipeHandle>::Write(base::Pickle* m, 20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez const param_type& p) { 21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez WriteParam(m, p.is_valid()); 22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if (p.is_valid()) 23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez MojoMessageHelper::WriteMessagePipeTo(m, mojo::ScopedMessagePipeHandle(p)); 24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezbool ParamTraits<mojo::MessagePipeHandle>::Read(const base::Pickle* m, 27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez base::PickleIterator* iter, 28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez param_type* r) { 29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez bool is_valid; 30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if (!ReadParam(m, iter, &is_valid)) 31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return false; 32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if (!is_valid) 33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return true; 34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez mojo::ScopedMessagePipeHandle handle; 36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if (!MojoMessageHelper::ReadMessagePipeFrom(m, iter, &handle)) 37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return false; 38645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez DCHECK(handle.is_valid()); 39645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez *r = handle.release(); 40645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return true; 41645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 42645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 43645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezvoid ParamTraits<mojo::MessagePipeHandle>::Log(const param_type& p, 44645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez std::string* l) { 45645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez l->append("mojo::MessagePipeHandle("); 46645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez LogParam(p.value(), l); 47645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez l->append(")"); 48645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 49645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 50645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} // namespace IPC 51