| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 CHROME_COMMON_IPC_CHANNEL_H_ | 5 #ifndef CHROME_COMMON_IPC_CHANNEL_H_ |
| 6 #define CHROME_COMMON_IPC_CHANNEL_H_ | 6 #define CHROME_COMMON_IPC_CHANNEL_H_ |
| 7 | 7 |
| 8 #include <queue> | 8 #include <queue> |
| 9 | 9 |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 // processed. Returns false if there are pending messages that cannot be | 92 // processed. Returns false if there are pending messages that cannot be |
| 93 // processed for some reason (e.g., because ProcessIncomingMessages would be | 93 // processed for some reason (e.g., because ProcessIncomingMessages would be |
| 94 // re-entered). | 94 // re-entered). |
| 95 // TODO(darin): Need a better way of dealing with the recursion problem. | 95 // TODO(darin): Need a better way of dealing with the recursion problem. |
| 96 bool ProcessPendingMessages(DWORD max_wait_msec); | 96 bool ProcessPendingMessages(DWORD max_wait_msec); |
| 97 | 97 |
| 98 private: | 98 private: |
| 99 const std::wstring PipeName(const std::wstring& channel_id) const; | 99 const std::wstring PipeName(const std::wstring& channel_id) const; |
| 100 bool CreatePipe(const std::wstring& channel_id, Mode mode); | 100 bool CreatePipe(const std::wstring& channel_id, Mode mode); |
| 101 bool ProcessConnection(); | 101 bool ProcessConnection(); |
| 102 bool ProcessIncomingMessages(OVERLAPPED* context, DWORD bytes_read); | 102 bool ProcessIncomingMessages(MessageLoopForIO::IOContext* context, |
| 103 bool ProcessOutgoingMessages(OVERLAPPED* context, DWORD bytes_written); | 103 DWORD bytes_read); |
| 104 bool ProcessOutgoingMessages(MessageLoopForIO::IOContext* context, |
| 105 DWORD bytes_written); |
| 104 | 106 |
| 105 // MessageLoop::IOHandler implementation. | 107 // MessageLoop::IOHandler implementation. |
| 106 virtual void OnIOCompleted(OVERLAPPED* context, DWORD bytes_transfered, | 108 virtual void OnIOCompleted(MessageLoopForIO::IOContext* context, |
| 107 DWORD error); | 109 DWORD bytes_transfered, DWORD error); |
| 108 | 110 |
| 109 private: | 111 private: |
| 110 enum { | 112 enum { |
| 111 BUF_SIZE = 4096 | 113 BUF_SIZE = 4096 |
| 112 }; | 114 }; |
| 113 | 115 |
| 114 struct State { | 116 struct State { |
| 115 State(); | 117 explicit State(Channel* channel); |
| 116 ~State(); | 118 ~State(); |
| 117 OVERLAPPED overlapped; | 119 MessageLoopForIO::IOContext context; |
| 118 bool is_pending; | 120 bool is_pending; |
| 119 }; | 121 }; |
| 120 | 122 |
| 121 State input_state_; | 123 State input_state_; |
| 122 State output_state_; | 124 State output_state_; |
| 123 | 125 |
| 124 HANDLE pipe_; | 126 HANDLE pipe_; |
| 125 Listener* listener_; | 127 Listener* listener_; |
| 126 | 128 |
| 127 // Messages to be sent are queued here. | 129 // Messages to be sent are queued here. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 155 // to avoid conflicting with normal | 157 // to avoid conflicting with normal |
| 156 // message types, which are enumeration | 158 // message types, which are enumeration |
| 157 // constants starting from 0. | 159 // constants starting from 0. |
| 158 }; | 160 }; |
| 159 }; | 161 }; |
| 160 | 162 |
| 161 } | 163 } |
| 162 | 164 |
| 163 #endif // CHROME_COMMON_IPC_CHANNEL_H_ | 165 #endif // CHROME_COMMON_IPC_CHANNEL_H_ |
| 164 | 166 |
| OLD | NEW |