Home | History | Annotate | Download | only in ipc
      1 // Copyright (c) 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 #ifndef IPC_IPC_MOJO_HANDLE_ATTACHMENT_H_
      6 #define IPC_IPC_MOJO_HANDLE_ATTACHMENT_H_
      7 
      8 #include "base/files/file.h"
      9 #include "base/macros.h"
     10 #include "build/build_config.h"
     11 #include "ipc/ipc_message_attachment.h"
     12 #include "ipc/ipc_message_support_export.h"
     13 #include "mojo/public/cpp/system/handle.h"
     14 
     15 namespace IPC {
     16 
     17 namespace internal {
     18 
     19 // A MessageAttachment that holds a MojoHandle.
     20 // This can hold any type of transferrable Mojo handle (i.e. message pipe, data
     21 // pipe, etc), but the receiver is expected to know what type of handle to
     22 // expect.
     23 class IPC_MESSAGE_SUPPORT_EXPORT MojoHandleAttachment
     24     : public MessageAttachment {
     25  public:
     26   explicit MojoHandleAttachment(mojo::ScopedHandle handle);
     27 
     28   Type GetType() const override;
     29 
     30   // Returns the owning handle transferring the ownership.
     31   mojo::ScopedHandle TakeHandle();
     32 
     33  private:
     34   ~MojoHandleAttachment() override;
     35   mojo::ScopedHandle handle_;
     36 
     37   DISALLOW_COPY_AND_ASSIGN(MojoHandleAttachment);
     38 };
     39 
     40 }  // namespace internal
     41 }  // namespace IPC
     42 
     43 #endif  // IPC_IPC_MOJO_HANDLE_ATTACHMENT_H_
     44