| OLD | NEW |
| 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_CORE_H_ | 5 #ifndef MOJO_EDK_SYSTEM_CORE_H_ |
| 6 #define MOJO_EDK_SYSTEM_CORE_H_ | 6 #define MOJO_EDK_SYSTEM_CORE_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <functional> | 10 #include <functional> |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 class PlatformSupport; | 30 class PlatformSupport; |
| 31 } | 31 } |
| 32 | 32 |
| 33 namespace system { | 33 namespace system { |
| 34 | 34 |
| 35 class Dispatcher; | 35 class Dispatcher; |
| 36 struct HandleSignalsState; | 36 struct HandleSignalsState; |
| 37 | 37 |
| 38 // |Core| is an object that implements the Mojo system calls. All public methods | 38 // |Core| is an object that implements the Mojo system calls. All public methods |
| 39 // are thread-safe. | 39 // are thread-safe. |
| 40 // |
| 41 // Convention: |MojoHandle|s are referred to as |handle| or |foo_handle|, |
| 42 // whereas |Handle|s are just |h|. |
| 40 class Core { | 43 class Core { |
| 41 public: | 44 public: |
| 42 // --------------------------------------------------------------------------- | 45 // --------------------------------------------------------------------------- |
| 43 | 46 |
| 44 // These methods are only to be used by via the embedder API (and internally): | 47 // These methods are only to be used by via the embedder API (and internally): |
| 45 | 48 |
| 46 // |*platform_support| must outlive this object. | 49 // |*platform_support| must outlive this object. |
| 47 explicit Core(embedder::PlatformSupport* platform_support); | 50 explicit Core(embedder::PlatformSupport* platform_support); |
| 48 virtual ~Core(); | 51 virtual ~Core(); |
| 49 | 52 |
| 50 // Adds |handle| (which must have a dispatcher) to the handle table, returning | 53 // Adds |handle| (which must have a dispatcher) to the handle table, returning |
| 51 // the handle value for it. Returns |MOJO_HANDLE_INVALID| on failure, namely | 54 // the handle value for it. Returns |MOJO_HANDLE_INVALID| on failure, namely |
| 52 // if the handle table is full. | 55 // if the handle table is full. |
| 53 MojoHandle AddHandle(Handle&& handle); | 56 MojoHandle AddHandle(Handle&& h); |
| 54 | 57 |
| 55 // Looks up the dispatcher for the given handle value. On success, gets the | 58 // Looks up the dispatcher for the given handle value. On success, gets the |
| 56 // dispatcher for a given handle value. On failure, returns an appropriate | 59 // dispatcher for a given handle value. On failure, returns an appropriate |
| 57 // result and leaves |dispatcher| alone), namely | 60 // result and leaves |dispatcher| alone), namely |
| 58 // |MOJO_RESULT_INVALID_ARGUMENT| if the handle value is invalid or | 61 // |MOJO_RESULT_INVALID_ARGUMENT| if the handle value is invalid or |
| 59 // |MOJO_RESULT_BUSY| if the handle is marked as busy. | 62 // |MOJO_RESULT_BUSY| if the handle is marked as busy. |
| 60 MojoResult GetDispatcher(MojoHandle handle_value, | 63 MojoResult GetDispatcher(MojoHandle handle, |
| 61 util::RefPtr<Dispatcher>* dispatcher); | 64 util::RefPtr<Dispatcher>* dispatcher); |
| 62 | 65 |
| 63 // Like |GetDispatcher()|, but on success also removes the handle from the | 66 // Like |GetDispatcher()|, but on success also removes the handle from the |
| 64 // handle table. | 67 // handle table. |
| 65 MojoResult GetAndRemoveDispatcher(MojoHandle handle_value, | 68 MojoResult GetAndRemoveDispatcher(MojoHandle handle, |
| 66 util::RefPtr<Dispatcher>* dispatcher); | 69 util::RefPtr<Dispatcher>* dispatcher); |
| 67 | 70 |
| 68 // Watches on the given handle for the given signals, calling |callback| when | 71 // Watches on the given handle for the given signals, calling |callback| when |
| 69 // a signal is satisfied or when all signals become unsatisfiable. |callback| | 72 // a signal is satisfied or when all signals become unsatisfiable. |callback| |
| 70 // must satisfy stringent requirements -- see |Awakable::Awake()| in | 73 // must satisfy stringent requirements -- see |Awakable::Awake()| in |
| 71 // awakable.h. In particular, it must not call any Mojo system functions. | 74 // awakable.h. In particular, it must not call any Mojo system functions. |
| 72 MojoResult AsyncWait(MojoHandle handle, | 75 MojoResult AsyncWait(MojoHandle handle, |
| 73 MojoHandleSignals signals, | 76 MojoHandleSignals signals, |
| 74 const std::function<void(MojoResult)>& callback); | 77 const std::function<void(MojoResult)>& callback); |
| 75 | 78 |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 util::Mutex mapping_table_mutex_; | 214 util::Mutex mapping_table_mutex_; |
| 212 MappingTable mapping_table_ MOJO_GUARDED_BY(mapping_table_mutex_); | 215 MappingTable mapping_table_ MOJO_GUARDED_BY(mapping_table_mutex_); |
| 213 | 216 |
| 214 MOJO_DISALLOW_COPY_AND_ASSIGN(Core); | 217 MOJO_DISALLOW_COPY_AND_ASSIGN(Core); |
| 215 }; | 218 }; |
| 216 | 219 |
| 217 } // namespace system | 220 } // namespace system |
| 218 } // namespace mojo | 221 } // namespace mojo |
| 219 | 222 |
| 220 #endif // MOJO_EDK_SYSTEM_CORE_H_ | 223 #endif // MOJO_EDK_SYSTEM_CORE_H_ |
| OLD | NEW |