| 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_SYSTEM_RAW_CHANNEL_H_ | 5 #ifndef MOJO_SYSTEM_RAW_CHANNEL_H_ |
| 6 #define MOJO_SYSTEM_RAW_CHANNEL_H_ | 6 #define MOJO_SYSTEM_RAW_CHANNEL_H_ |
| 7 | 7 |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/memory/weak_ptr.h" | 13 #include "base/memory/weak_ptr.h" |
| 14 #include "base/synchronization/lock.h" | 14 #include "base/synchronization/lock.h" |
| 15 #include "mojo/embedder/platform_handle_vector.h" |
| 15 #include "mojo/embedder/scoped_platform_handle.h" | 16 #include "mojo/embedder/scoped_platform_handle.h" |
| 16 #include "mojo/system/constants.h" | 17 #include "mojo/system/constants.h" |
| 17 #include "mojo/system/message_in_transit.h" | 18 #include "mojo/system/message_in_transit.h" |
| 18 #include "mojo/system/system_impl_export.h" | 19 #include "mojo/system/system_impl_export.h" |
| 19 | 20 |
| 20 namespace base { | 21 namespace base { |
| 21 class MessageLoopForIO; | 22 class MessageLoopForIO; |
| 22 } | 23 } |
| 23 | 24 |
| 24 namespace mojo { | 25 namespace mojo { |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 // The implementing subclass must guarantee that: | 202 // The implementing subclass must guarantee that: |
| 202 // - |bytes_read| is untouched unless |Read()| returns |IO_SUCCEEDED|; | 203 // - |bytes_read| is untouched unless |Read()| returns |IO_SUCCEEDED|; |
| 203 // - if the method returns |IO_PENDING|, |OnReadCompleted()| will be called on | 204 // - if the method returns |IO_PENDING|, |OnReadCompleted()| will be called on |
| 204 // the I/O thread to report the result, unless |Shutdown()| is called. | 205 // the I/O thread to report the result, unless |Shutdown()| is called. |
| 205 virtual IOResult Read(size_t* bytes_read) = 0; | 206 virtual IOResult Read(size_t* bytes_read) = 0; |
| 206 // Similar to |Read()|, except that the implementing subclass must also | 207 // Similar to |Read()|, except that the implementing subclass must also |
| 207 // guarantee that the method doesn't succeed synchronously, i.e., it only | 208 // guarantee that the method doesn't succeed synchronously, i.e., it only |
| 208 // returns |IO_FAILED| or |IO_PENDING|. | 209 // returns |IO_FAILED| or |IO_PENDING|. |
| 209 virtual IOResult ScheduleRead() = 0; | 210 virtual IOResult ScheduleRead() = 0; |
| 210 | 211 |
| 212 // Called by |OnReadCompleted()| to get the platform handles associated with |
| 213 // the given platform handle table (from a message). This should only be |
| 214 // called when |num_platform_handles| is nonzero. Returns null if the |
| 215 // |num_platform_handles| handles are not available. Only called on the I/O |
| 216 // thread (without |write_lock_| held). |
| 217 virtual scoped_ptr<embedder::PlatformHandleVector> GetReadPlatformHandles( |
| 218 size_t num_platform_handles, |
| 219 const void* platform_handle_table) = 0; |
| 220 |
| 211 // Writes contents in |write_buffer_no_lock()|. | 221 // Writes contents in |write_buffer_no_lock()|. |
| 212 // This class guarantees that: | 222 // This class guarantees that: |
| 213 // - the |PlatformHandle|s given by |GetPlatformHandlesToSend()| and the | 223 // - the |PlatformHandle|s given by |GetPlatformHandlesToSend()| and the |
| 214 // buffer(s) given by |GetBuffers()| will remain valid until write | 224 // buffer(s) given by |GetBuffers()| will remain valid until write |
| 215 // completion (see also the comments for |OnShutdownNoLock()|); | 225 // completion (see also the comments for |OnShutdownNoLock()|); |
| 216 // - a second write is not started if there is a pending write; | 226 // - a second write is not started if there is a pending write; |
| 217 // - the method is called under |write_lock_|. | 227 // - the method is called under |write_lock_|. |
| 218 // | 228 // |
| 219 // The implementing subclass must guarantee that: | 229 // The implementing subclass must guarantee that: |
| 220 // - |platform_handles_written| and |bytes_written| are untouched unless | 230 // - |platform_handles_written| and |bytes_written| are untouched unless |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 // are only used/invalidated on the I/O thread. | 286 // are only used/invalidated on the I/O thread. |
| 277 base::WeakPtrFactory<RawChannel> weak_ptr_factory_; | 287 base::WeakPtrFactory<RawChannel> weak_ptr_factory_; |
| 278 | 288 |
| 279 DISALLOW_COPY_AND_ASSIGN(RawChannel); | 289 DISALLOW_COPY_AND_ASSIGN(RawChannel); |
| 280 }; | 290 }; |
| 281 | 291 |
| 282 } // namespace system | 292 } // namespace system |
| 283 } // namespace mojo | 293 } // namespace mojo |
| 284 | 294 |
| 285 #endif // MOJO_SYSTEM_RAW_CHANNEL_H_ | 295 #endif // MOJO_SYSTEM_RAW_CHANNEL_H_ |
| OLD | NEW |