| Index: ipc/ipc_channel.h
|
| diff --git a/ipc/ipc_channel.h b/ipc/ipc_channel.h
|
| index c74d084baac5a23099037e49594acbd594862c1b..9021ab496729fa54c6320562f783990ed7b6e6ee 100644
|
| --- a/ipc/ipc_channel.h
|
| +++ b/ipc/ipc_channel.h
|
| @@ -52,7 +52,7 @@ class IPC_EXPORT Channel : public Endpoint {
|
| MODE_CLIENT_FLAG = 0x2,
|
| MODE_NAMED_FLAG = 0x4,
|
| #if defined(OS_POSIX)
|
| - MODE_OPEN_ACCESS_FLAG = 0x8, // Don't restrict access based on client UID.
|
| + MODE_OPEN_ACCESS_FLAG = 0x8, // Don't restrict access based on client UID.
|
| #endif
|
| };
|
|
|
| @@ -66,8 +66,8 @@ class IPC_EXPORT Channel : public Endpoint {
|
| MODE_NAMED_SERVER = MODE_SERVER_FLAG | MODE_NAMED_FLAG,
|
| MODE_NAMED_CLIENT = MODE_CLIENT_FLAG | MODE_NAMED_FLAG,
|
| #if defined(OS_POSIX)
|
| - MODE_OPEN_NAMED_SERVER = MODE_OPEN_ACCESS_FLAG | MODE_SERVER_FLAG |
|
| - MODE_NAMED_FLAG
|
| + MODE_OPEN_NAMED_SERVER =
|
| + MODE_OPEN_ACCESS_FLAG | MODE_SERVER_FLAG | MODE_NAMED_FLAG
|
| #endif
|
| };
|
|
|
| @@ -195,9 +195,9 @@ class IPC_EXPORT Channel : public Endpoint {
|
| // threads. This is constant for the lifetime of the |Channel|.
|
| virtual bool IsSendThreadSafe() const;
|
|
|
| - // NaCl in Non-SFI mode runs on Linux directly, and the following functions
|
| - // compiled on Linux are also needed. Please see also comments in
|
| - // components/nacl_nonsfi.gyp for more details.
|
| +// NaCl in Non-SFI mode runs on Linux directly, and the following functions
|
| +// compiled on Linux are also needed. Please see also comments in
|
| +// components/nacl_nonsfi.gyp for more details.
|
| #if defined(OS_POSIX) && !defined(OS_NACL_SFI)
|
| // On POSIX an IPC::Channel wraps a socketpair(), this method returns the
|
| // FD # for the client end of the socket.
|
| @@ -240,6 +240,26 @@ class IPC_EXPORT Channel : public Endpoint {
|
| // process such that it acts similar to if it was exec'd, for tests.
|
| static void NotifyProcessForkedForTesting();
|
| #endif
|
| +
|
| + protected:
|
| + // An OutputElement is a wrapper around a Message or raw buffer while it is
|
| + // waiting to be passed to the system's underlying IPC mechanism.
|
| + class OutputElement {
|
| + public:
|
| + // Takes ownership of message.
|
| + OutputElement(Message* message);
|
| + // Takes ownership of the buffer.
|
| + OutputElement(void* buffer, size_t length);
|
| + ~OutputElement();
|
| + size_t size() const;
|
| + const void* data() const;
|
| + const Message* get_message() const { return message_.get(); }
|
| +
|
| + private:
|
| + scoped_ptr<const Message> message_;
|
| + void* buffer_;
|
| + size_t length_;
|
| + };
|
| };
|
|
|
| #if defined(OS_POSIX)
|
|
|