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

Side by Side Diff: mojo/edk/system/raw_channel.h

Issue 1346383004: EDK: Remove MOJO_SYSTEM_IMPL_EXPORT, system_impl_export.h, etc. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 3 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
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_RAW_CHANNEL_H_ 5 #ifndef MOJO_EDK_SYSTEM_RAW_CHANNEL_H_
6 #define MOJO_EDK_SYSTEM_RAW_CHANNEL_H_ 6 #define MOJO_EDK_SYSTEM_RAW_CHANNEL_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/memory/weak_ptr.h" 11 #include "base/memory/weak_ptr.h"
12 #include "mojo/edk/embedder/platform_handle_vector.h" 12 #include "mojo/edk/embedder/platform_handle_vector.h"
13 #include "mojo/edk/embedder/scoped_platform_handle.h" 13 #include "mojo/edk/embedder/scoped_platform_handle.h"
14 #include "mojo/edk/system/message_in_transit.h" 14 #include "mojo/edk/system/message_in_transit.h"
15 #include "mojo/edk/system/message_in_transit_queue.h" 15 #include "mojo/edk/system/message_in_transit_queue.h"
16 #include "mojo/edk/system/mutex.h" 16 #include "mojo/edk/system/mutex.h"
17 #include "mojo/edk/system/system_impl_export.h"
18 #include "mojo/edk/system/thread_annotations.h" 17 #include "mojo/edk/system/thread_annotations.h"
19 #include "mojo/public/cpp/system/macros.h" 18 #include "mojo/public/cpp/system/macros.h"
20 19
21 namespace base { 20 namespace base {
22 class MessageLoopForIO; 21 class MessageLoopForIO;
23 } 22 }
24 23
25 namespace mojo { 24 namespace mojo {
26 namespace system { 25 namespace system {
27 26
28 // |RawChannel| is an interface and base class for objects that wrap an OS 27 // |RawChannel| is an interface and base class for objects that wrap an OS
29 // "pipe". It presents the following interface to users: 28 // "pipe". It presents the following interface to users:
30 // - Receives and dispatches messages on an I/O thread (running a 29 // - Receives and dispatches messages on an I/O thread (running a
31 // |MessageLoopForIO|. 30 // |MessageLoopForIO|.
32 // - Provides a thread-safe way of writing messages (|WriteMessage()|); 31 // - Provides a thread-safe way of writing messages (|WriteMessage()|);
33 // writing/queueing messages will not block and is atomic from the point of 32 // writing/queueing messages will not block and is atomic from the point of
34 // view of the caller. If necessary, messages are queued (to be written on 33 // view of the caller. If necessary, messages are queued (to be written on
35 // the aforementioned thread). 34 // the aforementioned thread).
36 // 35 //
37 // OS-specific implementation subclasses are to be instantiated using the 36 // OS-specific implementation subclasses are to be instantiated using the
38 // |Create()| static factory method. 37 // |Create()| static factory method.
39 // 38 //
40 // With the exception of |WriteMessage()| and |IsWriteBufferEmpty()|, this class 39 // With the exception of |WriteMessage()| and |IsWriteBufferEmpty()|, this class
41 // is thread-unsafe (and in general its methods should only be used on the I/O 40 // is thread-unsafe (and in general its methods should only be used on the I/O
42 // thread, i.e., the thread on which |Init()| is called). 41 // thread, i.e., the thread on which |Init()| is called).
43 class MOJO_SYSTEM_IMPL_EXPORT RawChannel { 42 class RawChannel {
44 public: 43 public:
45 // This object may be destroyed on any thread (if |Init()| was called, after 44 // This object may be destroyed on any thread (if |Init()| was called, after
46 // |Shutdown()| was called). 45 // |Shutdown()| was called).
47 virtual ~RawChannel(); 46 virtual ~RawChannel();
48 47
49 // The |Delegate| is only accessed on the same thread as the message loop 48 // The |Delegate| is only accessed on the same thread as the message loop
50 // (passed in on creation). 49 // (passed in on creation).
51 class MOJO_SYSTEM_IMPL_EXPORT Delegate { 50 class Delegate {
52 public: 51 public:
53 enum Error { 52 enum Error {
54 // Failed read due to raw channel shutdown (e.g., on the other side). 53 // Failed read due to raw channel shutdown (e.g., on the other side).
55 ERROR_READ_SHUTDOWN, 54 ERROR_READ_SHUTDOWN,
56 // Failed read due to raw channel being broken (e.g., if the other side 55 // Failed read due to raw channel being broken (e.g., if the other side
57 // died without shutting down). 56 // died without shutting down).
58 ERROR_READ_BROKEN, 57 ERROR_READ_BROKEN,
59 // Received a bad message. 58 // Received a bad message.
60 ERROR_READ_BAD_MESSAGE, 59 ERROR_READ_BAD_MESSAGE,
61 // Unknown read error. 60 // Unknown read error.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 IO_SUCCEEDED, 119 IO_SUCCEEDED,
121 // Failed due to a (probably) clean shutdown (e.g., of the other end). 120 // Failed due to a (probably) clean shutdown (e.g., of the other end).
122 IO_FAILED_SHUTDOWN, 121 IO_FAILED_SHUTDOWN,
123 // Failed due to the connection being broken (e.g., the other end dying). 122 // Failed due to the connection being broken (e.g., the other end dying).
124 IO_FAILED_BROKEN, 123 IO_FAILED_BROKEN,
125 // Failed due to some other (unexpected) reason. 124 // Failed due to some other (unexpected) reason.
126 IO_FAILED_UNKNOWN, 125 IO_FAILED_UNKNOWN,
127 IO_PENDING 126 IO_PENDING
128 }; 127 };
129 128
130 class MOJO_SYSTEM_IMPL_EXPORT ReadBuffer { 129 class ReadBuffer {
131 public: 130 public:
132 ReadBuffer(); 131 ReadBuffer();
133 ~ReadBuffer(); 132 ~ReadBuffer();
134 133
135 void GetBuffer(char** addr, size_t* size); 134 void GetBuffer(char** addr, size_t* size);
136 135
137 private: 136 private:
138 friend class RawChannel; 137 friend class RawChannel;
139 138
140 // We store data from |[Schedule]Read()|s in |buffer_|. The start of 139 // We store data from |[Schedule]Read()|s in |buffer_|. The start of
141 // |buffer_| is always aligned with a message boundary (we will copy memory 140 // |buffer_| is always aligned with a message boundary (we will copy memory
142 // to ensure this), but |buffer_| may be larger than the actual number of 141 // to ensure this), but |buffer_| may be larger than the actual number of
143 // bytes we have. 142 // bytes we have.
144 std::vector<char> buffer_; 143 std::vector<char> buffer_;
145 size_t num_valid_bytes_; 144 size_t num_valid_bytes_;
146 145
147 MOJO_DISALLOW_COPY_AND_ASSIGN(ReadBuffer); 146 MOJO_DISALLOW_COPY_AND_ASSIGN(ReadBuffer);
148 }; 147 };
149 148
150 class MOJO_SYSTEM_IMPL_EXPORT WriteBuffer { 149 class WriteBuffer {
151 public: 150 public:
152 struct Buffer { 151 struct Buffer {
153 const char* addr; 152 const char* addr;
154 size_t size; 153 size_t size;
155 }; 154 };
156 155
157 explicit WriteBuffer(size_t serialized_platform_handle_size); 156 explicit WriteBuffer(size_t serialized_platform_handle_size);
158 ~WriteBuffer(); 157 ~WriteBuffer();
159 158
160 // Returns true if there are (more) platform handles to be sent (from the 159 // Returns true if there are (more) platform handles to be sent (from the
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 base::WeakPtrFactory<RawChannel> weak_ptr_factory_ 328 base::WeakPtrFactory<RawChannel> weak_ptr_factory_
330 MOJO_GUARDED_BY(write_mutex_); 329 MOJO_GUARDED_BY(write_mutex_);
331 330
332 MOJO_DISALLOW_COPY_AND_ASSIGN(RawChannel); 331 MOJO_DISALLOW_COPY_AND_ASSIGN(RawChannel);
333 }; 332 };
334 333
335 } // namespace system 334 } // namespace system
336 } // namespace mojo 335 } // namespace mojo
337 336
338 #endif // MOJO_EDK_SYSTEM_RAW_CHANNEL_H_ 337 #endif // MOJO_EDK_SYSTEM_RAW_CHANNEL_H_
OLDNEW
« no previous file with comments | « mojo/edk/system/proxy_message_pipe_endpoint.h ('k') | mojo/edk/system/remote_consumer_data_pipe_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698