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 BASE_ASYNC_SOCKET_IO_HANDLER_H_ | 5 #ifndef BASE_ASYNC_SOCKET_IO_HANDLER_H_ |
6 #define BASE_ASYNC_SOCKET_IO_HANDLER_H_ | 6 #define BASE_ASYNC_SOCKET_IO_HANDLER_H_ |
7 | 7 |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/sync_socket.h" | 9 #include "base/sync_socket.h" |
10 #include "base/threading/non_thread_safe.h" | 10 #include "base/threading/non_thread_safe.h" |
11 | 11 |
12 namespace media { | 12 namespace base { |
13 | 13 |
14 // The message loop callback interface is different based on platforms. | 14 // The message loop callback interface is different based on platforms. |
15 #if defined(OS_WIN) | 15 #if defined(OS_WIN) |
16 typedef base::MessageLoopForIO::IOHandler MessageLoopIOHandler; | 16 typedef base::MessageLoopForIO::IOHandler MessageLoopIOHandler; |
darin (slow to review)
2013/08/23 16:20:41
nit: This appears to be defined in the wrong place
qsr
2013/08/26 08:36:02
I'm not sure we want this to be available outside
tommi (sloooow) - chröme
2013/08/26 08:46:25
The IOHandler and Watcher interfaces actually are
| |
17 #elif defined(OS_POSIX) | 17 #elif defined(OS_POSIX) |
18 typedef base::MessageLoopForIO::Watcher MessageLoopIOHandler; | 18 typedef base::MessageLoopForIO::Watcher MessageLoopIOHandler; |
19 #endif | 19 #endif |
20 | 20 |
21 // Extends the CancelableSyncSocket class to allow reading from a socket | 21 // Extends the CancelableSyncSocket class to allow reading from a socket |
22 // asynchronously on a TYPE_IO message loop thread. This makes it easy to share | 22 // asynchronously on a TYPE_IO message loop thread. This makes it easy to share |
23 // a thread that uses a message loop (e.g. for IPC and other things) and not | 23 // a thread that uses a message loop (e.g. for IPC and other things) and not |
24 // require a separate thread to read from the socket. | 24 // require a separate thread to read from the socket. |
25 // | 25 // |
26 // Example usage (also see the unit tests): | 26 // Example usage (also see the unit tests): |
(...skipping 12 matching lines...) Expand all Loading... | |
39 // } | 39 // } |
40 // | 40 // |
41 // private: | 41 // private: |
42 // void OnDataAvailable(int bytes_read) { | 42 // void OnDataAvailable(int bytes_read) { |
43 // if (ProcessData(&buffer_[0], bytes_read)) { | 43 // if (ProcessData(&buffer_[0], bytes_read)) { |
44 // // Issue another read. | 44 // // Issue another read. |
45 // CHECK(io_handler.Read(&buffer_[0], sizeof(buffer_))); | 45 // CHECK(io_handler.Read(&buffer_[0], sizeof(buffer_))); |
46 // } | 46 // } |
47 // } | 47 // } |
48 // | 48 // |
49 // media::AsyncSocketIoHandler io_handler; | 49 // base::AsyncSocketIoHandler io_handler; |
50 // base::CancelableSyncSocket* socket_; | 50 // base::CancelableSyncSocket* socket_; |
51 // char buffer_[kBufferSize]; | 51 // char buffer_[kBufferSize]; |
52 // }; | 52 // }; |
53 // | 53 // |
54 class BASE_EXPORT AsyncSocketIoHandler | 54 class BASE_EXPORT AsyncSocketIoHandler |
55 : public NON_EXPORTED_BASE(base::NonThreadSafe), | 55 : public NON_EXPORTED_BASE(base::NonThreadSafe), |
56 public NON_EXPORTED_BASE(MessageLoopIOHandler) { | 56 public NON_EXPORTED_BASE(MessageLoopIOHandler) { |
57 public: | 57 public: |
58 AsyncSocketIoHandler(); | 58 AsyncSocketIoHandler(); |
59 virtual ~AsyncSocketIoHandler(); | 59 virtual ~AsyncSocketIoHandler(); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
100 char* pending_buffer_; | 100 char* pending_buffer_; |
101 int pending_buffer_len_; | 101 int pending_buffer_len_; |
102 // |true| iff the message loop is watching the socket for IO events. | 102 // |true| iff the message loop is watching the socket for IO events. |
103 bool is_watching_; | 103 bool is_watching_; |
104 #endif | 104 #endif |
105 ReadCompleteCallback read_complete_; | 105 ReadCompleteCallback read_complete_; |
106 | 106 |
107 DISALLOW_COPY_AND_ASSIGN(AsyncSocketIoHandler); | 107 DISALLOW_COPY_AND_ASSIGN(AsyncSocketIoHandler); |
108 }; | 108 }; |
109 | 109 |
110 } // namespace media. | 110 } // namespace base. |
111 | 111 |
112 #endif // BASE_ASYNC_SOCKET_IO_HANDLER_H_ | 112 #endif // BASE_ASYNC_SOCKET_IO_HANDLER_H_ |
OLD | NEW |