ipc/chromium/src/chrome/common/transport_dib_mac.cc

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 // Copyright (c) 2009 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.
     5 #include "chrome/common/transport_dib.h"
     7 #include <unistd.h>
     8 #include <sys/stat.h>
    10 #include "base/eintr_wrapper.h"
    11 #include "base/shared_memory.h"
    13 TransportDIB::TransportDIB()
    14     : size_(0) {
    15 }
    17 TransportDIB::TransportDIB(TransportDIB::Handle dib)
    18     : shared_memory_(dib, false /* read write */),
    19       size_(0) {
    20 }
    22 TransportDIB::~TransportDIB() {
    23 }
    25 // static
    26 TransportDIB* TransportDIB::Create(size_t size, uint32_t sequence_num) {
    27   TransportDIB* dib = new TransportDIB;
    28   if (!dib->shared_memory_.Create("", false /* read write */,
    29                                   false /* do not open existing */, size)) {
    30     delete dib;
    31     return NULL;
    32   }
    34   dib->size_ = size;
    35   return dib;
    36 }
    38 // static
    39 TransportDIB* TransportDIB::Map(TransportDIB::Handle handle) {
    40   TransportDIB* dib = new TransportDIB(handle);
    41   struct stat st;
    42   fstat(handle.fd, &st);
    44   if (!dib->shared_memory_.Map(st.st_size)) {
    45     delete dib;
    46     HANDLE_EINTR(close(handle.fd));
    47     return nullptr;
    48   }
    50   dib->size_ = st.st_size;
    52   return dib;
    53 }
    55 void* TransportDIB::memory() const {
    56   return shared_memory_.memory();
    57 }
    59 TransportDIB::Id TransportDIB::id() const {
    60   return shared_memory_.id();
    61 }
    63 TransportDIB::Handle TransportDIB::handle() const {
    64   return shared_memory_.handle();
    65 }

mercurial