Index: mojo/system/raw_channel.h |
diff --git a/mojo/system/raw_channel.h b/mojo/system/raw_channel.h |
index 8f760d691940a2268b637bd0bcf7d897da4cd6f7..f1ce443e9d77aaeb8751619a36a62d4f7b345ac2 100644 |
--- a/mojo/system/raw_channel.h |
+++ b/mojo/system/raw_channel.h |
@@ -72,15 +72,14 @@ class MOJO_SYSTEM_IMPL_EXPORT RawChannel { |
// Static factory method. |handle| should be a handle to a |
// (platform-appropriate) bidirectional communication channel (e.g., a socket |
- // on POSIX, a named pipe on Windows). Does *not* take ownership of |delegate| |
- // and |message_loop_for_io|, which must remain alive while this object does. |
- static RawChannel* Create(embedder::ScopedPlatformHandle handle, |
- Delegate* delegate, |
- base::MessageLoopForIO* message_loop_for_io); |
+ // on POSIX, a named pipe on Windows). |
+ static scoped_ptr<RawChannel> Create(embedder::ScopedPlatformHandle handle); |
- // This must be called (on an I/O thread) before this object is used. Returns |
- // true on success. On failure, |Shutdown()| should *not* be called. |
- bool Init(); |
+ // This must be called (on an I/O thread) before this object is used. Does |
+ // *not* take ownership of |delegate|. Both the I/O thread and |delegate| must |
+ // remain alive for the lifetime of this object. Returns true on success. On |
+ // failure, |Shutdown()| should *not* be called. |
+ bool Init(Delegate* delegate); |
// This must be called (on the I/O thread) before this object is destroyed. |
void Shutdown(); |
@@ -150,7 +149,7 @@ class MOJO_SYSTEM_IMPL_EXPORT RawChannel { |
DISALLOW_COPY_AND_ASSIGN(WriteBuffer); |
}; |
- RawChannel(Delegate* delegate, base::MessageLoopForIO* message_loop_for_io); |
+ RawChannel(); |
base::MessageLoopForIO* message_loop_for_io() { return message_loop_for_io_; } |
base::Lock& write_lock() { return write_lock_; } |
@@ -223,8 +222,10 @@ class MOJO_SYSTEM_IMPL_EXPORT RawChannel { |
// Must be called only if |write_stopped_| is false and under |write_lock_|. |
bool OnWriteCompletedNoLock(bool result, size_t bytes_written); |
- Delegate* const delegate_; |
- base::MessageLoopForIO* const message_loop_for_io_; |
+ // Set in |Init()| and never changed (hence usable on any thread without |
+ // locking): |
+ Delegate* delegate_; |
+ base::MessageLoopForIO* message_loop_for_io_; |
// Only used on the I/O thread: |
bool read_stopped_; |