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/edk/system/dispatcher.h

Issue 1941883002: Move the Dispatcher::EntrypointClass enum out of Dispatcher to its own file. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 7 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 | « mojo/edk/system/BUILD.gn ('k') | mojo/edk/system/entrypoint_class.h » ('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_EDK_SYSTEM_DISPATCHER_H_ 5 #ifndef MOJO_EDK_SYSTEM_DISPATCHER_H_
6 #define MOJO_EDK_SYSTEM_DISPATCHER_H_ 6 #define MOJO_EDK_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 <memory> 11 #include <memory>
12 #include <ostream> 12 #include <ostream>
13 #include <vector> 13 #include <vector>
14 14
15 #include "mojo/edk/platform/scoped_platform_handle.h" 15 #include "mojo/edk/platform/scoped_platform_handle.h"
16 #include "mojo/edk/system/entrypoint_class.h"
16 #include "mojo/edk/system/handle_signals_state.h" 17 #include "mojo/edk/system/handle_signals_state.h"
17 #include "mojo/edk/system/memory.h" 18 #include "mojo/edk/system/memory.h"
18 #include "mojo/edk/util/mutex.h" 19 #include "mojo/edk/util/mutex.h"
19 #include "mojo/edk/util/ref_counted.h" 20 #include "mojo/edk/util/ref_counted.h"
20 #include "mojo/edk/util/ref_ptr.h" 21 #include "mojo/edk/util/ref_ptr.h"
21 #include "mojo/edk/util/thread_annotations.h" 22 #include "mojo/edk/util/thread_annotations.h"
22 #include "mojo/public/c/system/buffer.h" 23 #include "mojo/public/c/system/buffer.h"
23 #include "mojo/public/c/system/data_pipe.h" 24 #include "mojo/public/c/system/data_pipe.h"
24 #include "mojo/public/c/system/handle.h" 25 #include "mojo/public/c/system/handle.h"
25 #include "mojo/public/c/system/message_pipe.h" 26 #include "mojo/public/c/system/message_pipe.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 UNKNOWN = 0, 68 UNKNOWN = 0,
68 MESSAGE_PIPE, 69 MESSAGE_PIPE,
69 DATA_PIPE_PRODUCER, 70 DATA_PIPE_PRODUCER,
70 DATA_PIPE_CONSUMER, 71 DATA_PIPE_CONSUMER,
71 SHARED_BUFFER, 72 SHARED_BUFFER,
72 73
73 // "Private" types (not exposed via the public interface): 74 // "Private" types (not exposed via the public interface):
74 PLATFORM_HANDLE = -1 75 PLATFORM_HANDLE = -1
75 }; 76 };
76 77
77 // Classes of "entrypoints"/"syscalls": Each dispatcher should support entire
78 // classes of methods (and if they don't support a given class, they should
79 // return |MOJO_RESULT_INVALID_ARGUMENT| for all the methods in that class).
80 // Warning: A method may be called even if |SupportsEntrypointClass()|
81 // indicates that the method's class is not supported (see below).
82 enum class EntrypointClass {
83 // |ReadMessage()|, |WriteMessage()|:
84 MESSAGE_PIPE,
85
86 // |SetDataPipeProducerOptions()|, |GetDataPipeProducerOptions()|,
87 // |WriteData()|, |BeginWriteData()|, |EndWriteData()|:
88 DATA_PIPE_PRODUCER,
89
90 // |SetDataPipeConsumerOptions()|, |GetDataPipeConsumerOptions()|,
91 // |ReadData()|, |BeginReadData()|, |EndReadData()|:
92 DATA_PIPE_CONSUMER,
93
94 // |DuplicateBufferHandle()|, |GetBufferInformation()|, |MapBuffer()|:
95 BUFFER,
96 };
97
98 // Gets the type of the dispatcher; see |Type| above. 78 // Gets the type of the dispatcher; see |Type| above.
99 virtual Type GetType() const = 0; 79 virtual Type GetType() const = 0;
100 80
101 // Gets whether the given entrypoint class is supported; see |EntrypointClass| 81 // Gets whether the given entrypoint class is supported; see the definition of
102 // above. This is ONLY called when a rights check has failed, to determine 82 // |EntrypointClass|. This is ONLY called when a rights check has failed, to
103 // whether |MOJO_RESULT_PERMISSION_DENIED| (if the entrypoint class is 83 // determine whether |MOJO_RESULT_PERMISSION_DENIED| (if the entrypoint class
104 // supported) or |MOJO_RESULT_INVALID_ARGUMENT| (if not) should be returned. 84 // is supported) or |MOJO_RESULT_INVALID_ARGUMENT| (if not) should be
105 // In the case that the rights check passes, |Core| will proceed immediately 85 // returned. In the case that the rights check passes, |Core| will proceed
106 // to call the method (so if the method is not supported, it must still return 86 // immediately to call the method (so if the method is not supported, it must
107 // |MOJO_RESULT_INVALID_ARGUMENT|). 87 // still return |MOJO_RESULT_INVALID_ARGUMENT|).
108 virtual bool SupportsEntrypointClass( 88 virtual bool SupportsEntrypointClass(
109 EntrypointClass entrypoint_class) const = 0; 89 EntrypointClass entrypoint_class) const = 0;
110 90
111 // These methods implement the various primitives named |Mojo...()|. These 91 // These methods implement the various primitives named |Mojo...()|. These
112 // take |mutex_| and handle races with |Close()|. Then they call out to 92 // take |mutex_| and handle races with |Close()|. Then they call out to
113 // subclasses' |...ImplNoLock()| methods (still under |mutex_|), which 93 // subclasses' |...ImplNoLock()| methods (still under |mutex_|), which
114 // actually implement the primitives. 94 // actually implement the primitives.
115 // NOTE(vtl): This puts a big lock around each dispatcher (i.e., handle), and 95 // NOTE(vtl): This puts a big lock around each dispatcher (i.e., handle), and
116 // prevents the various |...ImplNoLock()|s from releasing the lock as soon as 96 // prevents the various |...ImplNoLock()|s from releasing the lock as soon as
117 // possible. If this becomes an issue, we can rethink this. 97 // possible. If this becomes an issue, we can rethink this.
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 474
495 // So logging macros and |DCHECK_EQ()|, etc. work. 475 // So logging macros and |DCHECK_EQ()|, etc. work.
496 inline std::ostream& operator<<(std::ostream& out, Dispatcher::Type type) { 476 inline std::ostream& operator<<(std::ostream& out, Dispatcher::Type type) {
497 return out << static_cast<int>(type); 477 return out << static_cast<int>(type);
498 } 478 }
499 479
500 } // namespace system 480 } // namespace system
501 } // namespace mojo 481 } // namespace mojo
502 482
503 #endif // MOJO_EDK_SYSTEM_DISPATCHER_H_ 483 #endif // MOJO_EDK_SYSTEM_DISPATCHER_H_
OLDNEW
« no previous file with comments | « mojo/edk/system/BUILD.gn ('k') | mojo/edk/system/entrypoint_class.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698