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

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

Issue 231353002: Make mojo_system static and mojo_system_impl a component, never use both (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Get content builds to work Created 6 years, 8 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 | Annotate | Revision Log
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_DISPATCHER_H_ 5 #ifndef MOJO_SYSTEM_DISPATCHER_H_
6 #define MOJO_SYSTEM_DISPATCHER_H_ 6 #define MOJO_SYSTEM_DISPATCHER_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
16 #include "base/synchronization/lock.h" 16 #include "base/synchronization/lock.h"
17 #include "mojo/embedder/platform_handle.h" 17 #include "mojo/embedder/platform_handle.h"
18 #include "mojo/public/c/system/core.h" 18 #include "mojo/public/c/system/core.h"
19 #include "mojo/system/system_impl_export.h" 19 #include "mojo/system/system_impl_export.h"
20 20
21 namespace mojo { 21 namespace mojo {
22 namespace system { 22 namespace system {
23 23
24 class Channel; 24 class Channel;
25 class CoreImpl; 25 class Core;
26 class Dispatcher; 26 class Dispatcher;
27 class DispatcherTransport; 27 class DispatcherTransport;
28 class HandleTable; 28 class HandleTable;
29 class LocalMessagePipeEndpoint; 29 class LocalMessagePipeEndpoint;
30 class MessageInTransit; 30 class MessageInTransit;
31 class ProxyMessagePipeEndpoint; 31 class ProxyMessagePipeEndpoint;
32 class RawSharedBufferMapping; 32 class RawSharedBufferMapping;
33 class Waiter; 33 class Waiter;
34 34
35 namespace test { 35 namespace test {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 // A dispatcher must be put into a special state in order to be sent across a 128 // A dispatcher must be put into a special state in order to be sent across a
129 // message pipe. Outside of tests, only |HandleTableAccess| is allowed to do 129 // message pipe. Outside of tests, only |HandleTableAccess| is allowed to do
130 // this, since there are requirements on the handle table (see below). 130 // this, since there are requirements on the handle table (see below).
131 // 131 //
132 // In this special state, only a restricted set of operations is allowed. 132 // In this special state, only a restricted set of operations is allowed.
133 // These are the ones available as |DispatcherTransport| methods. Other 133 // These are the ones available as |DispatcherTransport| methods. Other
134 // |Dispatcher| methods must not be called until |DispatcherTransport::End()| 134 // |Dispatcher| methods must not be called until |DispatcherTransport::End()|
135 // has been called. 135 // has been called.
136 class HandleTableAccess { 136 class HandleTableAccess {
137 private: 137 private:
138 friend class CoreImpl; 138 friend class Core;
139 friend class HandleTable; 139 friend class HandleTable;
140 // Tests also need this, to avoid needing |CoreImpl|. 140 // Tests also need this, to avoid needing |Core|.
141 friend DispatcherTransport test::DispatcherTryStartTransport(Dispatcher*); 141 friend DispatcherTransport test::DispatcherTryStartTransport(Dispatcher*);
142 142
143 // This must be called under the handle table lock and only if the handle 143 // This must be called under the handle table lock and only if the handle
144 // table entry is not marked busy. The caller must maintain a reference to 144 // table entry is not marked busy. The caller must maintain a reference to
145 // |dispatcher| until |DispatcherTransport::End()| is called. 145 // |dispatcher| until |DispatcherTransport::End()| is called.
146 static DispatcherTransport TryStartTransport(Dispatcher* dispatcher); 146 static DispatcherTransport TryStartTransport(Dispatcher* dispatcher);
147 }; 147 };
148 148
149 // A |MessageInTransit| may serialize dispatchers that are attached to it to a 149 // A |MessageInTransit| may serialize dispatchers that are attached to it to a
150 // given |Channel| and then (probably in a different process) deserialize. 150 // given |Channel| and then (probably in a different process) deserialize.
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 360
361 Dispatcher* dispatcher_; 361 Dispatcher* dispatcher_;
362 362
363 // Copy and assign allowed. 363 // Copy and assign allowed.
364 }; 364 };
365 365
366 } // namespace system 366 } // namespace system
367 } // namespace mojo 367 } // namespace mojo
368 368
369 #endif // MOJO_SYSTEM_DISPATCHER_H_ 369 #endif // MOJO_SYSTEM_DISPATCHER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698