OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_TRANSPORT_DATA_H_ | 5 #ifndef MOJO_EDK_SYSTEM_TRANSPORT_DATA_H_ |
6 #define MOJO_EDK_SYSTEM_TRANSPORT_DATA_H_ | 6 #define MOJO_EDK_SYSTEM_TRANSPORT_DATA_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "mojo/edk/platform/aligned_alloc.h" | 13 #include "mojo/edk/platform/aligned_alloc.h" |
14 #include "mojo/edk/platform/scoped_platform_handle.h" | 14 #include "mojo/edk/platform/scoped_platform_handle.h" |
15 #include "mojo/edk/system/dispatcher.h" | 15 #include "mojo/edk/system/dispatcher.h" |
16 #include "mojo/public/cpp/system/macros.h" | 16 #include "mojo/public/cpp/system/macros.h" |
17 | 17 |
18 namespace mojo { | 18 namespace mojo { |
19 namespace system { | 19 namespace system { |
20 | 20 |
21 class Channel; | 21 class Channel; |
22 | 22 |
23 // This class is used by |MessageInTransit| to represent handles (|Dispatcher|s) | 23 // This class is used by |MessageInTransit| to represent handles (|Dispatcher|s) |
24 // in various stages of serialization. | 24 // in various stages of serialization. |
25 // | 25 // |
26 // The stages are: | 26 // The stages are: |
27 // - Before reaching |TransportData|: Turn |DispatcherTransport|s into | 27 // - Before reaching |TransportData|: Turn |HandleTransport|s into |
28 // |Dispatcher|s that are "owned" by (and attached to) a |MessageInTransit|. | 28 // |Dispatcher|s that are "owned" by (and attached to) a |MessageInTransit|. |
29 // This invalidates the handles in the space of the sending application | 29 // This invalidates the handles in the space of the sending application |
30 // (and, e.g., if another thread is waiting on such a handle, it'll be | 30 // (and, e.g., if another thread is waiting on such a handle, it'll be |
31 // notified of this invalidation). | 31 // notified of this invalidation). |
32 // - Serialize these dispatchers into the |TransportData|: First, for each | 32 // - Serialize these dispatchers into the |TransportData|: First, for each |
33 // attached dispatcher, there's an entry in the |TransportData|'s "handle | 33 // attached dispatcher, there's an entry in the |TransportData|'s "handle |
34 // table", which points to a segment of (dispatcher-type-dependent) data. | 34 // table", which points to a segment of (dispatcher-type-dependent) data. |
35 // - During the serialization of the dispatchers, |PlatformHandle|s may be | 35 // - During the serialization of the dispatchers, |PlatformHandle|s may be |
36 // detached from the dispatchers and attached to the |TransportData|. | 36 // detached from the dispatchers and attached to the |TransportData|. |
37 // - Before sending the |MessageInTransit|, including its main buffer and the | 37 // - Before sending the |MessageInTransit|, including its main buffer and the |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 std::unique_ptr<std::vector<platform::ScopedPlatformHandle>> | 183 std::unique_ptr<std::vector<platform::ScopedPlatformHandle>> |
184 platform_handles_; | 184 platform_handles_; |
185 | 185 |
186 MOJO_DISALLOW_COPY_AND_ASSIGN(TransportData); | 186 MOJO_DISALLOW_COPY_AND_ASSIGN(TransportData); |
187 }; | 187 }; |
188 | 188 |
189 } // namespace system | 189 } // namespace system |
190 } // namespace mojo | 190 } // namespace mojo |
191 | 191 |
192 #endif // MOJO_EDK_SYSTEM_TRANSPORT_DATA_H_ | 192 #endif // MOJO_EDK_SYSTEM_TRANSPORT_DATA_H_ |
OLD | NEW |