Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(811)

Unified Diff: mojo/system/channel.h

Issue 591573002: Mojo: Remove Channel::AttachMessagePipeEndpoint(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/embedder/embedder.cc ('k') | mojo/system/channel.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/system/channel.h
diff --git a/mojo/system/channel.h b/mojo/system/channel.h
index 0527ee3ffe4084294f88863e4eff532e1078e5c3..320925991168833651d97d18436342a0afbc50f9 100644
--- a/mojo/system/channel.h
+++ b/mojo/system/channel.h
@@ -44,19 +44,9 @@ class ChannelEndpoint;
// reference is kept on its creation thread and is released after |Shutdown()|
// is called, but other threads may have temporarily "dangling" references).
//
-// Note that |MessagePipe| calls into |Channel| and the former's |lock_| must be
-// acquired before the latter's. When |Channel| wants to call into a
-// |MessagePipe|, it must obtain a reference to the |MessagePipe| (from
-// |local_id_to_endpoint_info_map_|) under |Channel::lock_| and then release the
-// lock.
-//
-// Also, care must be taken with respect to references: While a |Channel| has
-// references to |MessagePipe|s, |MessagePipe|s (via |ProxyMessagePipeEndpoint|)
-// may also have references to |Channel|s. These references are set up by
-// calling |AttachMessagePipeEndpoint()|. The reference to |MessagePipe| owned
-// by |Channel| must be removed by calling |DetachMessagePipeEndpoint()| (which
-// is done by |MessagePipe|/|ProxyMessagePipeEndpoint|, which simultaneously
-// removes its reference to |Channel|).
+// Note the lock order (in order of allowable acquisition): |MessagePipe|,
+// |ChannelEndpoint|, |Channel|. Thus |Channel| may not call into
+// |ChannelEndpoint| with |Channel|'s lock held.
class MOJO_SYSTEM_IMPL_EXPORT Channel
: public base::RefCountedThreadSafe<Channel>,
public RawChannel::Delegate {
@@ -84,14 +74,8 @@ class MOJO_SYSTEM_IMPL_EXPORT Channel
// may be called multiple times, or not at all.)
void WillShutdownSoon();
- // TODO(vtl): Write comment here.
- MessageInTransit::EndpointId AttachEndpoint(
- scoped_refptr<ChannelEndpoint> endpoint);
-
- // TODO(vtl): Remove this version.
- // Attaches the given message pipe/port's endpoint (which must be a
- // |ProxyMessagePipeEndpoint|) to this channel. This assigns it a local ID,
- // which it returns. The first message pipe endpoint attached will always have
+ // Attaches the given endpoint to this channel. This assigns it a local ID,
+ // which it returns. The first endpoint attached will always have
// |kBootstrapEndpointId| as its local ID. (For bootstrapping, this occurs on
// both sides, so one should use |kBootstrapEndpointId| for the remote ID for
// the first message pipe across a channel.) Returns |kInvalidEndpointId| on
@@ -99,9 +83,8 @@ class MOJO_SYSTEM_IMPL_EXPORT Channel
// TODO(vtl): This should be combined with "run", and it should take a
// |ChannelEndpoint| instead.
// TODO(vtl): Maybe limit the number of attached message pipes.
- MessageInTransit::EndpointId AttachMessagePipeEndpoint(
- scoped_refptr<MessagePipe> message_pipe,
- unsigned port);
+ MessageInTransit::EndpointId AttachEndpoint(
+ scoped_refptr<ChannelEndpoint> endpoint);
// Runs the message pipe with the given |local_id| (previously attached), with
// the given |remote_id| (negotiated using some other means, e.g., over an
@@ -130,8 +113,8 @@ class MOJO_SYSTEM_IMPL_EXPORT Channel
// This removes the message pipe/port's endpoint (with the given local ID and
// given remote ID, which should be |kInvalidEndpointId| if not yet running),
- // returned by |AttachMessagePipeEndpoint()| from this channel. After this is
- // called, |local_id| may be reused for another message pipe.
+ // returned by |AttachEndpoint()| from this channel. After this is called,
+ // |local_id| may be reused for another message pipe.
void DetachMessagePipeEndpoint(MessageInTransit::EndpointId local_id,
MessageInTransit::EndpointId remote_id);
« no previous file with comments | « mojo/embedder/embedder.cc ('k') | mojo/system/channel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698