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/brokerable_attachment.h" 6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include <stddef.h> 8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 9645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "build/build_config.h" 10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#include "ipc/attachment_broker.h" 11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chaveznamespace IPC { 13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// BrokerableAttachment::AttachmentId ------------------------------------------ 15645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#if !USE_ATTACHMENT_BROKER 16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// static 17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBrokerableAttachment::AttachmentId 18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBrokerableAttachment::AttachmentId::CreateIdWithRandomNonce() { 19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez CHECK(false) << "Platforms that don't support attachment brokering shouldn't " 20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez "be trying to generating a random nonce."; 21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return AttachmentId(); 22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#endif 24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBrokerableAttachment::AttachmentId::AttachmentId() { 26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez for (size_t i = 0; i < BrokerableAttachment::kNonceSize; ++i) 27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez nonce[i] = 0; 28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBrokerableAttachment::AttachmentId::AttachmentId(const char* start_address, 31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez size_t size) { 32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez DCHECK(size == BrokerableAttachment::kNonceSize); 33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez for (size_t i = 0; i < BrokerableAttachment::kNonceSize; ++i) 34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez nonce[i] = start_address[i]; 35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezvoid BrokerableAttachment::AttachmentId::SerializeToBuffer(char* start_address, 38645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez size_t size) { 39645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez DCHECK(size == BrokerableAttachment::kNonceSize); 40645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez for (size_t i = 0; i < BrokerableAttachment::kNonceSize; ++i) 41645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez start_address[i] = nonce[i]; 42645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 43645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 44645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez// BrokerableAttachment::BrokerableAttachment ---------------------------------- 45645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 46645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBrokerableAttachment::BrokerableAttachment() 47645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez : id_(AttachmentId::CreateIdWithRandomNonce()) {} 48645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 49645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBrokerableAttachment::BrokerableAttachment(const AttachmentId& id) : id_(id) {} 50645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 51645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBrokerableAttachment::~BrokerableAttachment() {} 52645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 53645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBrokerableAttachment::AttachmentId BrokerableAttachment::GetIdentifier() const { 54645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return id_; 55645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 56645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 57645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezbool BrokerableAttachment::NeedsBrokering() const { 58645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return GetBrokerableType() == PLACEHOLDER; 59645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 60645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 61645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBrokerableAttachment::Type BrokerableAttachment::GetType() const { 62645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return TYPE_BROKERABLE_ATTACHMENT; 63645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 64645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 65645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#if defined(OS_POSIX) 66645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezbase::PlatformFile BrokerableAttachment::TakePlatformFile() { 67645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez NOTREACHED(); 68645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return base::PlatformFile(); 69645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 70645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez#endif // OS_POSIX 71645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 72645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} // namespace IPC 73