Home | History | Annotate | Download | only in ipc
      1 // Copyright 2015 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "ipc/brokerable_attachment.h"
      6 
      7 #include <stddef.h>
      8 
      9 #include "build/build_config.h"
     10 #include "ipc/attachment_broker.h"
     11 
     12 namespace IPC {
     13 
     14 // BrokerableAttachment::AttachmentId ------------------------------------------
     15 #if !USE_ATTACHMENT_BROKER
     16 // static
     17 BrokerableAttachment::AttachmentId
     18 BrokerableAttachment::AttachmentId::CreateIdWithRandomNonce() {
     19   CHECK(false) << "Platforms that don't support attachment brokering shouldn't "
     20                   "be trying to generating a random nonce.";
     21   return AttachmentId();
     22 }
     23 #endif
     24 
     25 BrokerableAttachment::AttachmentId::AttachmentId() {
     26   for (size_t i = 0; i < BrokerableAttachment::kNonceSize; ++i)
     27     nonce[i] = 0;
     28 }
     29 
     30 BrokerableAttachment::AttachmentId::AttachmentId(const char* start_address,
     31                                                  size_t size) {
     32   DCHECK(size == BrokerableAttachment::kNonceSize);
     33   for (size_t i = 0; i < BrokerableAttachment::kNonceSize; ++i)
     34     nonce[i] = start_address[i];
     35 }
     36 
     37 void BrokerableAttachment::AttachmentId::SerializeToBuffer(char* start_address,
     38                                                            size_t size) {
     39   DCHECK(size == BrokerableAttachment::kNonceSize);
     40   for (size_t i = 0; i < BrokerableAttachment::kNonceSize; ++i)
     41     start_address[i] = nonce[i];
     42 }
     43 
     44 // BrokerableAttachment::BrokerableAttachment ----------------------------------
     45 
     46 BrokerableAttachment::BrokerableAttachment()
     47     : id_(AttachmentId::CreateIdWithRandomNonce()) {}
     48 
     49 BrokerableAttachment::BrokerableAttachment(const AttachmentId& id) : id_(id) {}
     50 
     51 BrokerableAttachment::~BrokerableAttachment() {}
     52 
     53 BrokerableAttachment::AttachmentId BrokerableAttachment::GetIdentifier() const {
     54   return id_;
     55 }
     56 
     57 bool BrokerableAttachment::NeedsBrokering() const {
     58   return GetBrokerableType() == PLACEHOLDER;
     59 }
     60 
     61 BrokerableAttachment::Type BrokerableAttachment::GetType() const {
     62   return TYPE_BROKERABLE_ATTACHMENT;
     63 }
     64 
     65 #if defined(OS_POSIX)
     66 base::PlatformFile BrokerableAttachment::TakePlatformFile() {
     67   NOTREACHED();
     68   return base::PlatformFile();
     69 }
     70 #endif  // OS_POSIX
     71 
     72 }  // namespace IPC
     73