OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #include "base/sync_socket.h" | 5 #include "base/sync_socket.h" |
6 | 6 |
7 #include <stdio.h> | 7 #include <stdio.h> |
8 #include <string> | 8 #include <string> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 // messages from the client. | 100 // messages from the client. |
101 class SyncSocketServerListener : public IPC::Channel::Listener { | 101 class SyncSocketServerListener : public IPC::Channel::Listener { |
102 public: | 102 public: |
103 SyncSocketServerListener() : chan_(NULL) { | 103 SyncSocketServerListener() : chan_(NULL) { |
104 } | 104 } |
105 | 105 |
106 void Init(IPC::Channel* chan) { | 106 void Init(IPC::Channel* chan) { |
107 chan_ = chan; | 107 chan_ = chan; |
108 } | 108 } |
109 | 109 |
110 virtual void OnMessageReceived(const IPC::Message& msg) { | 110 virtual bool OnMessageReceived(const IPC::Message& msg) { |
111 if (msg.routing_id() == MSG_ROUTING_CONTROL) { | 111 if (msg.routing_id() == MSG_ROUTING_CONTROL) { |
112 IPC_BEGIN_MESSAGE_MAP(SyncSocketServerListener, msg) | 112 IPC_BEGIN_MESSAGE_MAP(SyncSocketServerListener, msg) |
113 IPC_MESSAGE_HANDLER(MsgClassSetHandle, OnMsgClassSetHandle) | 113 IPC_MESSAGE_HANDLER(MsgClassSetHandle, OnMsgClassSetHandle) |
114 IPC_MESSAGE_HANDLER(MsgClassShutdown, OnMsgClassShutdown) | 114 IPC_MESSAGE_HANDLER(MsgClassShutdown, OnMsgClassShutdown) |
115 IPC_END_MESSAGE_MAP() | 115 IPC_END_MESSAGE_MAP() |
116 } | 116 } |
| 117 return true; |
117 } | 118 } |
118 | 119 |
119 private: | 120 private: |
120 // This sort of message is sent first, causing the transfer of | 121 // This sort of message is sent first, causing the transfer of |
121 // the handle for the SyncSocket. This message sends a buffer | 122 // the handle for the SyncSocket. This message sends a buffer |
122 // on the SyncSocket and then sends a response to the client. | 123 // on the SyncSocket and then sends a response to the client. |
123 #if defined(OS_WIN) | 124 #if defined(OS_WIN) |
124 void OnMsgClassSetHandle(const base::SyncSocket::Handle handle) { | 125 void OnMsgClassSetHandle(const base::SyncSocket::Handle handle) { |
125 SetHandle(handle); | 126 SetHandle(handle); |
126 } | 127 } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 class SyncSocketClientListener : public IPC::Channel::Listener { | 169 class SyncSocketClientListener : public IPC::Channel::Listener { |
169 public: | 170 public: |
170 SyncSocketClientListener() { | 171 SyncSocketClientListener() { |
171 } | 172 } |
172 | 173 |
173 void Init(base::SyncSocket* socket, IPC::Channel* chan) { | 174 void Init(base::SyncSocket* socket, IPC::Channel* chan) { |
174 socket_ = socket; | 175 socket_ = socket; |
175 chan_ = chan; | 176 chan_ = chan; |
176 } | 177 } |
177 | 178 |
178 virtual void OnMessageReceived(const IPC::Message& msg) { | 179 virtual bool OnMessageReceived(const IPC::Message& msg) { |
179 if (msg.routing_id() == MSG_ROUTING_CONTROL) { | 180 if (msg.routing_id() == MSG_ROUTING_CONTROL) { |
180 IPC_BEGIN_MESSAGE_MAP(SyncSocketClientListener, msg) | 181 IPC_BEGIN_MESSAGE_MAP(SyncSocketClientListener, msg) |
181 IPC_MESSAGE_HANDLER(MsgClassResponse, OnMsgClassResponse) | 182 IPC_MESSAGE_HANDLER(MsgClassResponse, OnMsgClassResponse) |
182 IPC_END_MESSAGE_MAP() | 183 IPC_END_MESSAGE_MAP() |
183 } | 184 } |
| 185 return true; |
184 } | 186 } |
185 | 187 |
186 private: | 188 private: |
187 // When a response is received from the server, it sends the same | 189 // When a response is received from the server, it sends the same |
188 // string as was written on the SyncSocket. These are compared | 190 // string as was written on the SyncSocket. These are compared |
189 // and a shutdown message is sent back to the server. | 191 // and a shutdown message is sent back to the server. |
190 void OnMsgClassResponse(const std::string& str) { | 192 void OnMsgClassResponse(const std::string& str) { |
191 // We rely on the order of sync_socket.Send() and chan_->Send() in | 193 // We rely on the order of sync_socket.Send() and chan_->Send() in |
192 // the SyncSocketServerListener object. | 194 // the SyncSocketServerListener object. |
193 EXPECT_EQ(kHelloStringLength, socket_->Peek()); | 195 EXPECT_EQ(kHelloStringLength, socket_->Peek()); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 #endif // defined(OS_WIN) | 244 #endif // defined(OS_WIN) |
243 EXPECT_TRUE(chan.Send(msg)); | 245 EXPECT_TRUE(chan.Send(msg)); |
244 // Use the current thread as the I/O thread. | 246 // Use the current thread as the I/O thread. |
245 MessageLoop::current()->Run(); | 247 MessageLoop::current()->Run(); |
246 // Shut down. | 248 // Shut down. |
247 delete pair[0]; | 249 delete pair[0]; |
248 delete pair[1]; | 250 delete pair[1]; |
249 EXPECT_TRUE(base::WaitForSingleProcess(server_process, 5000)); | 251 EXPECT_TRUE(base::WaitForSingleProcess(server_process, 5000)); |
250 base::CloseProcessHandle(server_process); | 252 base::CloseProcessHandle(server_process); |
251 } | 253 } |
OLD | NEW |