Chromium Code Reviews| Index: mojo/edk/system/channel.h |
| diff --git a/mojo/edk/system/channel.h b/mojo/edk/system/channel.h |
| index 0d7ccdb613f591a8659dad663f3741a628e0a549..e6ca4b961d5ee6d86f934eab88946d8819da1012 100644 |
| --- a/mojo/edk/system/channel.h |
| +++ b/mojo/edk/system/channel.h |
| @@ -66,6 +66,17 @@ class Channel : public base::RefCountedThreadSafe<Channel> { |
| char padding[6]; |
| #endif // defined(OS_CHROMEOS) |
| }; |
| + |
| +#if defined(OS_MACOSX) |
| + struct MachPortsEntry { |
| + uint16_t index; |
| + uint32_t mach_port; |
| + static_assert(sizeof(mach_port_t) <= sizeof(uint32_t), |
| + "mach_port_t must be smaller than uint32_t"); |
|
Ken Rockot(use gerrit already)
2016/03/09 08:34:31
nit: must be no larger than uint32_t
Anand Mistry (off Chromium)
2016/03/11 07:44:18
Done.
|
| + }; |
| + static_assert(sizeof(MachPortsEntry) == 6, |
| + "sizeof(MachPortsEntry) must be 6 bytes"); |
| +#endif |
| #pragma pack(pop) |
| // Allocates and owns a buffer for message data with enough capacity for |
| @@ -111,6 +122,11 @@ class Channel : public base::RefCountedThreadSafe<Channel> { |
| // handles(). |
| void SetHandles(ScopedPlatformHandleVectorPtr new_handles); |
| ScopedPlatformHandleVectorPtr TakeHandles(); |
| + // Version of TakeHandles that returns a vector of platform handles suitable |
| + // for transfer over an underlying OS mechanism. i.e. file descriptors over |
| + // a unix domain socket. Any handle that cannot be transferred this way, |
| + // such as Mach port, will be removed. |
| + ScopedPlatformHandleVectorPtr TakeHandlesForTransport(); |
| #if defined(OS_WIN) |
| // Prepares the handles in this message for use in a different process. |
| @@ -138,6 +154,12 @@ class Channel : public base::RefCountedThreadSafe<Channel> { |
| ScopedPlatformHandleVectorPtr handle_vector_; |
| #endif |
| +#if defined(OS_MACOSX) |
| + // On OSX, handles which are mach ports are serialised into the data buffer |
| + // after the rest of the payload. |
| + MachPortsEntry* mach_ports_ = nullptr; |
|
Ken Rockot(use gerrit already)
2016/03/09 08:34:31
nit: this comment appears to be out of date since
Anand Mistry (off Chromium)
2016/03/11 07:44:17
Done, and updated the windows comment.
|
| +#endif |
| + |
| DISALLOW_COPY_AND_ASSIGN(Message); |
| }; |