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

Side by Side Diff: mojo/system/channel.h

Issue 584723002: Mojo: Add Channel::AttachEndpoint(), which takes a ChannelEndpoint. (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 unified diff | Download patch
« no previous file with comments | « no previous file | mojo/system/channel.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_SYSTEM_CHANNEL_H_ 5 #ifndef MOJO_SYSTEM_CHANNEL_H_
6 #define MOJO_SYSTEM_CHANNEL_H_ 6 #define MOJO_SYSTEM_CHANNEL_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 13 matching lines...) Expand all
24 #include "mojo/system/system_impl_export.h" 24 #include "mojo/system/system_impl_export.h"
25 25
26 namespace mojo { 26 namespace mojo {
27 27
28 namespace embedder { 28 namespace embedder {
29 class PlatformSupport; 29 class PlatformSupport;
30 } 30 }
31 31
32 namespace system { 32 namespace system {
33 33
34 class ChannelEndpoint;
35
34 // This class is mostly thread-safe. It must be created on an I/O thread. 36 // This class is mostly thread-safe. It must be created on an I/O thread.
35 // |Init()| must be called on that same thread before it becomes thread-safe (in 37 // |Init()| must be called on that same thread before it becomes thread-safe (in
36 // particular, before references are given to any other thread) and |Shutdown()| 38 // particular, before references are given to any other thread) and |Shutdown()|
37 // must be called on that same thread before destruction. Its public methods are 39 // must be called on that same thread before destruction. Its public methods are
38 // otherwise thread-safe. (Many private methods are restricted to the creation 40 // otherwise thread-safe. (Many private methods are restricted to the creation
39 // thread.) It may be destroyed on any thread, in the sense that the last 41 // thread.) It may be destroyed on any thread, in the sense that the last
40 // reference to it may be released on any thread, with the proviso that 42 // reference to it may be released on any thread, with the proviso that
41 // |Shutdown()| must have been called first (so the pattern is that a "main" 43 // |Shutdown()| must have been called first (so the pattern is that a "main"
42 // reference is kept on its creation thread and is released after |Shutdown()| 44 // reference is kept on its creation thread and is released after |Shutdown()|
43 // is called, but other threads may have temporarily "dangling" references). 45 // is called, but other threads may have temporarily "dangling" references).
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 // This must be called on the creation thread before destruction (which can 77 // This must be called on the creation thread before destruction (which can
76 // happen on any thread). 78 // happen on any thread).
77 void Shutdown(); 79 void Shutdown();
78 80
79 // Signals that |Shutdown()| will be called soon (this may be called from any 81 // Signals that |Shutdown()| will be called soon (this may be called from any
80 // thread, unlike |Shutdown()|). Warnings will be issued if, e.g., messages 82 // thread, unlike |Shutdown()|). Warnings will be issued if, e.g., messages
81 // are written after this is called; other warnings may be suppressed. (This 83 // are written after this is called; other warnings may be suppressed. (This
82 // may be called multiple times, or not at all.) 84 // may be called multiple times, or not at all.)
83 void WillShutdownSoon(); 85 void WillShutdownSoon();
84 86
87 // TODO(vtl): Write comment here.
88 MessageInTransit::EndpointId AttachEndpoint(
89 scoped_refptr<ChannelEndpoint> endpoint);
90
91 // TODO(vtl): Remove this version.
85 // Attaches the given message pipe/port's endpoint (which must be a 92 // Attaches the given message pipe/port's endpoint (which must be a
86 // |ProxyMessagePipeEndpoint|) to this channel. This assigns it a local ID, 93 // |ProxyMessagePipeEndpoint|) to this channel. This assigns it a local ID,
87 // which it returns. The first message pipe endpoint attached will always have 94 // which it returns. The first message pipe endpoint attached will always have
88 // |kBootstrapEndpointId| as its local ID. (For bootstrapping, this occurs on 95 // |kBootstrapEndpointId| as its local ID. (For bootstrapping, this occurs on
89 // both sides, so one should use |kBootstrapEndpointId| for the remote ID for 96 // both sides, so one should use |kBootstrapEndpointId| for the remote ID for
90 // the first message pipe across a channel.) Returns |kInvalidEndpointId| on 97 // the first message pipe across a channel.) Returns |kInvalidEndpointId| on
91 // failure. 98 // failure.
92 // TODO(vtl): This should be combined with "run", and it should take a 99 // TODO(vtl): This should be combined with "run", and it should take a
93 // |ChannelEndpoint| instead. 100 // |ChannelEndpoint| instead.
94 // TODO(vtl): Maybe limit the number of attached message pipes. 101 // TODO(vtl): Maybe limit the number of attached message pipes.
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 // be checked for existence before use. 202 // be checked for existence before use.
196 MessageInTransit::EndpointId next_local_id_; 203 MessageInTransit::EndpointId next_local_id_;
197 204
198 DISALLOW_COPY_AND_ASSIGN(Channel); 205 DISALLOW_COPY_AND_ASSIGN(Channel);
199 }; 206 };
200 207
201 } // namespace system 208 } // namespace system
202 } // namespace mojo 209 } // namespace mojo
203 210
204 #endif // MOJO_SYSTEM_CHANNEL_H_ 211 #endif // MOJO_SYSTEM_CHANNEL_H_
OLDNEW
« no previous file with comments | « no previous file | mojo/system/channel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698