Index: mojo/system/channel.h |
diff --git a/mojo/system/channel.h b/mojo/system/channel.h |
index dd185b9172d1a06b80c863d30a9b202350d7e59d..f7fb7e547a5037c78c3a5a35afeb00f8df9bc6f2 100644 |
--- a/mojo/system/channel.h |
+++ b/mojo/system/channel.h |
@@ -35,8 +35,9 @@ namespace system { |
// |Init()| must be called on that same thread before it becomes thread-safe (in |
// particular, before references are given to any other thread) and |Shutdown()| |
// must be called on that same thread before destruction. Its public methods are |
-// otherwise thread-safe. It may be destroyed on any thread, in the sense that |
-// the last reference to it may be released on any thread, with the proviso that |
+// otherwise thread-safe. (Many private methods are restricted to the creation |
+// thread.) It may be destroyed on any thread, in the sense that the last |
+// reference to it may be released on any thread, with the proviso that |
// |Shutdown()| must have been called first (so the pattern is that a "main" |
// reference is kept on its creation thread and is released after |Shutdown()| |
// is called, but other threads may have temporarily "dangling" references). |
@@ -136,13 +137,13 @@ class MOJO_SYSTEM_IMPL_EXPORT Channel |
friend class base::RefCountedThreadSafe<Channel>; |
virtual ~Channel(); |
- // |RawChannel::Delegate| implementation: |
+ // |RawChannel::Delegate| implementation (only called on the creation thread): |
virtual void OnReadMessage( |
const MessageInTransit::View& message_view, |
embedder::ScopedPlatformHandleVectorPtr platform_handles) OVERRIDE; |
virtual void OnError(Error error) OVERRIDE; |
- // Helpers for |OnReadMessage|: |
+ // Helpers for |OnReadMessage| (only called on the creation thread): |
void OnReadMessageForDownstream( |
const MessageInTransit::View& message_view, |
embedder::ScopedPlatformHandleVectorPtr platform_handles); |
@@ -152,17 +153,20 @@ class MOJO_SYSTEM_IMPL_EXPORT Channel |
// Removes the message pipe endpoint with the given local ID, which must exist |
// and be a zombie, and given remote ID. Returns false on failure, in |
- // particular if no message pipe with |local_id| is attached. |
+ // particular if no message pipe with |local_id| is attached. Only called on |
+ // the creation thread. |
bool RemoveMessagePipeEndpoint(MessageInTransit::EndpointId local_id, |
MessageInTransit::EndpointId remote_id); |
- // Handles errors (e.g., invalid messages) from the remote side. |
+ // Handles errors (e.g., invalid messages) from the remote side. Callable from |
+ // any thread. |
void HandleRemoteError(const base::StringPiece& error_message); |
- // Handles internal errors/failures from the local side. |
+ // Handles internal errors/failures from the local side. Callable from any |
+ // thread. |
void HandleLocalError(const base::StringPiece& error_message); |
// Helper to send channel control messages. Returns true on success. Should be |
- // called *without* |lock_| held. |
+ // called *without* |lock_| held. Callable from any thread. |
bool SendControlMessage(MessageInTransit::Subtype subtype, |
MessageInTransit::EndpointId source_id, |
MessageInTransit::EndpointId destination_id); |