| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "ppapi/proxy/ppb_flash_udp_socket_proxy.h" | 5 #include "ppapi/proxy/ppb_udp_socket_private_proxy.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cstring> | 8 #include <cstring> |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/message_loop.h" | 13 #include "base/message_loop.h" |
| 14 #include "base/task.h" | 14 #include "base/task.h" |
| 15 #include "ppapi/c/pp_errors.h" | 15 #include "ppapi/c/pp_errors.h" |
| 16 #include "ppapi/proxy/plugin_dispatcher.h" | 16 #include "ppapi/proxy/plugin_dispatcher.h" |
| 17 #include "ppapi/proxy/plugin_resource_tracker.h" | 17 #include "ppapi/proxy/plugin_resource_tracker.h" |
| 18 #include "ppapi/proxy/ppapi_messages.h" | 18 #include "ppapi/proxy/ppapi_messages.h" |
| 19 #include "ppapi/shared_impl/resource.h" | 19 #include "ppapi/shared_impl/resource.h" |
| 20 #include "ppapi/thunk/ppb_flash_udp_socket_api.h" | 20 #include "ppapi/thunk/ppb_udp_socket_private_api.h" |
| 21 #include "ppapi/thunk/thunk.h" | 21 #include "ppapi/thunk/thunk.h" |
| 22 | 22 |
| 23 using ppapi::thunk::PPB_Flash_UDPSocket_API; | 23 using ppapi::thunk::PPB_UDPSocket_Private_API; |
| 24 | 24 |
| 25 namespace ppapi { | 25 namespace ppapi { |
| 26 namespace proxy { | 26 namespace proxy { |
| 27 | 27 |
| 28 const int32_t kFlashUDPSocketMaxReadSize = 1024 * 1024; | 28 const int32_t kUDPSocketMaxReadSize = 1024 * 1024; |
| 29 const int32_t kFlashUDPSocketMaxWriteSize = 1024 * 1024; | 29 const int32_t kUDPSocketMaxWriteSize = 1024 * 1024; |
| 30 | 30 |
| 31 namespace { | 31 namespace { |
| 32 | 32 |
| 33 class FlashUDPSocket; | 33 class UDPSocket; |
| 34 | 34 |
| 35 typedef std::map<uint32, FlashUDPSocket*> IDToSocketMap; | 35 typedef std::map<uint32, UDPSocket*> IDToSocketMap; |
| 36 IDToSocketMap* g_id_to_socket = NULL; | 36 IDToSocketMap* g_id_to_socket = NULL; |
| 37 | 37 |
| 38 class AbortCallbackTask : public Task { | 38 class AbortCallbackTask : public Task { |
| 39 public: | 39 public: |
| 40 explicit AbortCallbackTask(PP_CompletionCallback callback) | 40 explicit AbortCallbackTask(PP_CompletionCallback callback) |
| 41 : callback_(callback) {} | 41 : callback_(callback) {} |
| 42 virtual ~AbortCallbackTask() {} | 42 virtual ~AbortCallbackTask() {} |
| 43 virtual void Run() { | 43 virtual void Run() { |
| 44 if (callback_.func) | 44 if (callback_.func) |
| 45 PP_RunCompletionCallback(&callback_, PP_ERROR_ABORTED); | 45 PP_RunCompletionCallback(&callback_, PP_ERROR_ABORTED); |
| 46 } | 46 } |
| 47 | 47 |
| 48 private: | 48 private: |
| 49 PP_CompletionCallback callback_; | 49 PP_CompletionCallback callback_; |
| 50 }; | 50 }; |
| 51 | 51 |
| 52 class FlashUDPSocket : public PPB_Flash_UDPSocket_API, | 52 class UDPSocket : public PPB_UDPSocket_Private_API, |
| 53 public Resource { | 53 public Resource { |
| 54 public: | 54 public: |
| 55 FlashUDPSocket(const HostResource& resource, uint32 socket_id); | 55 UDPSocket(const HostResource& resource, uint32 socket_id); |
| 56 virtual ~FlashUDPSocket(); | 56 virtual ~UDPSocket(); |
| 57 | 57 |
| 58 // ResourceObjectBase overrides. | 58 // ResourceObjectBase overrides. |
| 59 virtual PPB_Flash_UDPSocket_API* AsPPB_Flash_UDPSocket_API() OVERRIDE; | 59 virtual PPB_UDPSocket_Private_API* AsPPB_UDPSocket_Private_API() OVERRIDE; |
| 60 | 60 |
| 61 // PPB_Flash_UDPSocket_API implementation. | 61 // PPB_UDPSocket_Private_API implementation. |
| 62 virtual int32_t Bind(const PP_NetAddress_Private* addr, | 62 virtual int32_t Bind(const PP_NetAddress_Private* addr, |
| 63 PP_CompletionCallback callback) OVERRIDE; | 63 PP_CompletionCallback callback) OVERRIDE; |
| 64 virtual int32_t RecvFrom(char* buffer, | 64 virtual int32_t RecvFrom(char* buffer, |
| 65 int32_t num_bytes, | 65 int32_t num_bytes, |
| 66 PP_CompletionCallback callback) OVERRIDE; | 66 PP_CompletionCallback callback) OVERRIDE; |
| 67 virtual PP_Bool GetRecvFromAddress(PP_NetAddress_Private* addr) OVERRIDE; | 67 virtual PP_Bool GetRecvFromAddress(PP_NetAddress_Private* addr) OVERRIDE; |
| 68 | 68 |
| 69 virtual int32_t SendTo(const char* buffer, | 69 virtual int32_t SendTo(const char* buffer, |
| 70 int32_t num_bytes, | 70 int32_t num_bytes, |
| 71 const PP_NetAddress_Private* addr, | 71 const PP_NetAddress_Private* addr, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 94 | 94 |
| 95 PP_CompletionCallback bind_callback_; | 95 PP_CompletionCallback bind_callback_; |
| 96 PP_CompletionCallback recvfrom_callback_; | 96 PP_CompletionCallback recvfrom_callback_; |
| 97 PP_CompletionCallback sendto_callback_; | 97 PP_CompletionCallback sendto_callback_; |
| 98 | 98 |
| 99 char* read_buffer_; | 99 char* read_buffer_; |
| 100 int32_t bytes_to_read_; | 100 int32_t bytes_to_read_; |
| 101 | 101 |
| 102 PP_NetAddress_Private recvfrom_addr_; | 102 PP_NetAddress_Private recvfrom_addr_; |
| 103 | 103 |
| 104 DISALLOW_COPY_AND_ASSIGN(FlashUDPSocket); | 104 DISALLOW_COPY_AND_ASSIGN(UDPSocket); |
| 105 }; | 105 }; |
| 106 | 106 |
| 107 FlashUDPSocket::FlashUDPSocket(const HostResource& resource, | 107 UDPSocket::UDPSocket(const HostResource& resource, uint32 socket_id) |
| 108 uint32 socket_id) | |
| 109 : Resource(resource), | 108 : Resource(resource), |
| 110 socket_id_(socket_id), | 109 socket_id_(socket_id), |
| 111 binded_(false), | 110 binded_(false), |
| 112 closed_(false), | 111 closed_(false), |
| 113 bind_callback_(PP_BlockUntilComplete()), | 112 bind_callback_(PP_BlockUntilComplete()), |
| 114 recvfrom_callback_(PP_BlockUntilComplete()), | 113 recvfrom_callback_(PP_BlockUntilComplete()), |
| 115 sendto_callback_(PP_BlockUntilComplete()), | 114 sendto_callback_(PP_BlockUntilComplete()), |
| 116 read_buffer_(NULL), | 115 read_buffer_(NULL), |
| 117 bytes_to_read_(-1) { | 116 bytes_to_read_(-1) { |
| 118 DCHECK(socket_id != 0); | 117 DCHECK(socket_id != 0); |
| 119 | 118 |
| 120 recvfrom_addr_.size = 0; | 119 recvfrom_addr_.size = 0; |
| 121 memset(recvfrom_addr_.data, 0, sizeof(recvfrom_addr_.data)); | 120 memset(recvfrom_addr_.data, 0, sizeof(recvfrom_addr_.data)); |
| 122 | 121 |
| 123 if (!g_id_to_socket) | 122 if (!g_id_to_socket) |
| 124 g_id_to_socket = new IDToSocketMap(); | 123 g_id_to_socket = new IDToSocketMap(); |
| 125 DCHECK(g_id_to_socket->find(socket_id) == g_id_to_socket->end()); | 124 DCHECK(g_id_to_socket->find(socket_id) == g_id_to_socket->end()); |
| 126 (*g_id_to_socket)[socket_id] = this; | 125 (*g_id_to_socket)[socket_id] = this; |
| 127 } | 126 } |
| 128 | 127 |
| 129 FlashUDPSocket::~FlashUDPSocket() { | 128 UDPSocket::~UDPSocket() { |
| 130 Close(); | 129 Close(); |
| 131 } | 130 } |
| 132 | 131 |
| 133 PPB_Flash_UDPSocket_API* FlashUDPSocket::AsPPB_Flash_UDPSocket_API() { | 132 PPB_UDPSocket_Private_API* UDPSocket::AsPPB_UDPSocket_Private_API() { |
| 134 return this; | 133 return this; |
| 135 } | 134 } |
| 136 | 135 |
| 137 int32_t FlashUDPSocket::Bind(const PP_NetAddress_Private* addr, | 136 int32_t UDPSocket::Bind(const PP_NetAddress_Private* addr, |
| 138 PP_CompletionCallback callback) { | 137 PP_CompletionCallback callback) { |
| 139 if (!addr || !callback.func) | 138 if (!addr || !callback.func) |
| 140 return PP_ERROR_BADARGUMENT; | 139 return PP_ERROR_BADARGUMENT; |
| 141 if (binded_ || closed_) | 140 if (binded_ || closed_) |
| 142 return PP_ERROR_FAILED; | 141 return PP_ERROR_FAILED; |
| 143 if (bind_callback_.func) | 142 if (bind_callback_.func) |
| 144 return PP_ERROR_INPROGRESS; | 143 return PP_ERROR_INPROGRESS; |
| 145 | 144 |
| 146 bind_callback_ = callback; | 145 bind_callback_ = callback; |
| 147 | 146 |
| 148 GetDispatcher()->SendToBrowser( | 147 GetDispatcher()->SendToBrowser( |
| 149 new PpapiHostMsg_PPBFlashUDPSocket_Bind(socket_id_, *addr)); | 148 new PpapiHostMsg_PPBUDPSocket_Bind(socket_id_, *addr)); |
| 150 | 149 |
| 151 return PP_OK_COMPLETIONPENDING; | 150 return PP_OK_COMPLETIONPENDING; |
| 152 } | 151 } |
| 153 | 152 |
| 154 int32_t FlashUDPSocket::RecvFrom(char* buffer, | 153 int32_t UDPSocket::RecvFrom(char* buffer, |
| 155 int32_t num_bytes, | 154 int32_t num_bytes, |
| 156 PP_CompletionCallback callback) { | 155 PP_CompletionCallback callback) { |
| 157 if (!buffer || num_bytes <= 0 || !callback.func) | 156 if (!buffer || num_bytes <= 0 || !callback.func) |
| 158 return PP_ERROR_BADARGUMENT; | 157 return PP_ERROR_BADARGUMENT; |
| 159 if (!binded_) | 158 if (!binded_) |
| 160 return PP_ERROR_FAILED; | 159 return PP_ERROR_FAILED; |
| 161 if (recvfrom_callback_.func) | 160 if (recvfrom_callback_.func) |
| 162 return PP_ERROR_INPROGRESS; | 161 return PP_ERROR_INPROGRESS; |
| 163 | 162 |
| 164 read_buffer_ = buffer; | 163 read_buffer_ = buffer; |
| 165 bytes_to_read_ = std::min(num_bytes, kFlashUDPSocketMaxReadSize); | 164 bytes_to_read_ = std::min(num_bytes, kUDPSocketMaxReadSize); |
| 166 recvfrom_callback_ = callback; | 165 recvfrom_callback_ = callback; |
| 167 | 166 |
| 168 // Send the request, the browser will call us back via RecvFromACK. | 167 // Send the request, the browser will call us back via RecvFromACK. |
| 169 GetDispatcher()->SendToBrowser( | 168 GetDispatcher()->SendToBrowser( |
| 170 new PpapiHostMsg_PPBFlashUDPSocket_RecvFrom( | 169 new PpapiHostMsg_PPBUDPSocket_RecvFrom( |
| 171 socket_id_, num_bytes)); | 170 socket_id_, num_bytes)); |
| 172 return PP_OK_COMPLETIONPENDING; | 171 return PP_OK_COMPLETIONPENDING; |
| 173 } | 172 } |
| 174 | 173 |
| 175 PP_Bool FlashUDPSocket::GetRecvFromAddress(PP_NetAddress_Private* addr) { | 174 PP_Bool UDPSocket::GetRecvFromAddress(PP_NetAddress_Private* addr) { |
| 176 if (!addr) | 175 if (!addr) |
| 177 return PP_FALSE; | 176 return PP_FALSE; |
| 178 | 177 |
| 179 *addr = recvfrom_addr_; | 178 *addr = recvfrom_addr_; |
| 180 return PP_TRUE; | 179 return PP_TRUE; |
| 181 } | 180 } |
| 182 | 181 |
| 183 int32_t FlashUDPSocket::SendTo(const char* buffer, | 182 int32_t UDPSocket::SendTo(const char* buffer, |
| 184 int32_t num_bytes, | 183 int32_t num_bytes, |
| 185 const PP_NetAddress_Private* addr, | 184 const PP_NetAddress_Private* addr, |
| 186 PP_CompletionCallback callback) { | 185 PP_CompletionCallback callback) { |
| 187 if (!buffer || num_bytes <= 0 || !addr || !callback.func) | 186 if (!buffer || num_bytes <= 0 || !addr || !callback.func) |
| 188 return PP_ERROR_BADARGUMENT; | 187 return PP_ERROR_BADARGUMENT; |
| 189 if (!binded_) | 188 if (!binded_) |
| 190 return PP_ERROR_FAILED; | 189 return PP_ERROR_FAILED; |
| 191 if (sendto_callback_.func) | 190 if (sendto_callback_.func) |
| 192 return PP_ERROR_INPROGRESS; | 191 return PP_ERROR_INPROGRESS; |
| 193 | 192 |
| 194 if (num_bytes > kFlashUDPSocketMaxWriteSize) | 193 if (num_bytes > kUDPSocketMaxWriteSize) |
| 195 num_bytes = kFlashUDPSocketMaxWriteSize; | 194 num_bytes = kUDPSocketMaxWriteSize; |
| 196 | 195 |
| 197 sendto_callback_ = callback; | 196 sendto_callback_ = callback; |
| 198 | 197 |
| 199 // Send the request, the browser will call us back via SendToACK. | 198 // Send the request, the browser will call us back via SendToACK. |
| 200 GetDispatcher()->SendToBrowser( | 199 GetDispatcher()->SendToBrowser( |
| 201 new PpapiHostMsg_PPBFlashUDPSocket_SendTo( | 200 new PpapiHostMsg_PPBUDPSocket_SendTo( |
| 202 socket_id_, std::string(buffer, num_bytes), *addr)); | 201 socket_id_, std::string(buffer, num_bytes), *addr)); |
| 203 | 202 |
| 204 return PP_OK_COMPLETIONPENDING; | 203 return PP_OK_COMPLETIONPENDING; |
| 205 } | 204 } |
| 206 | 205 |
| 207 void FlashUDPSocket::Close() { | 206 void UDPSocket::Close() { |
| 208 if(closed_) | 207 if(closed_) |
| 209 return; | 208 return; |
| 210 | 209 |
| 211 binded_ = false; | 210 binded_ = false; |
| 212 closed_ = true; | 211 closed_ = true; |
| 213 | 212 |
| 214 // After removed from the mapping, this object won't receive any notfications | 213 // After removed from the mapping, this object won't receive any notfications |
| 215 // from the proxy. | 214 // from the proxy. |
| 216 DCHECK(g_id_to_socket->find(socket_id_) != g_id_to_socket->end()); | 215 DCHECK(g_id_to_socket->find(socket_id_) != g_id_to_socket->end()); |
| 217 g_id_to_socket->erase(socket_id_); | 216 g_id_to_socket->erase(socket_id_); |
| 218 | 217 |
| 219 GetDispatcher()->SendToBrowser( | 218 GetDispatcher()->SendToBrowser( |
| 220 new PpapiHostMsg_PPBFlashUDPSocket_Close(socket_id_)); | 219 new PpapiHostMsg_PPBUDPSocket_Close(socket_id_)); |
| 221 socket_id_ = 0; | 220 socket_id_ = 0; |
| 222 | 221 |
| 223 PostAbortAndClearIfNecessary(&bind_callback_); | 222 PostAbortAndClearIfNecessary(&bind_callback_); |
| 224 PostAbortAndClearIfNecessary(&recvfrom_callback_); | 223 PostAbortAndClearIfNecessary(&recvfrom_callback_); |
| 225 PostAbortAndClearIfNecessary(&sendto_callback_); | 224 PostAbortAndClearIfNecessary(&sendto_callback_); |
| 226 } | 225 } |
| 227 | 226 |
| 228 void FlashUDPSocket::OnBindCompleted(bool succeeded) { | 227 void UDPSocket::OnBindCompleted(bool succeeded) { |
| 229 if (!bind_callback_.func) { | 228 if (!bind_callback_.func) { |
| 230 NOTREACHED(); | 229 NOTREACHED(); |
| 231 return; | 230 return; |
| 232 } | 231 } |
| 233 | 232 |
| 234 if (succeeded) | 233 if (succeeded) |
| 235 binded_ = true; | 234 binded_ = true; |
| 236 | 235 |
| 237 PP_RunAndClearCompletionCallback(&bind_callback_, | 236 PP_RunAndClearCompletionCallback(&bind_callback_, |
| 238 succeeded ? PP_OK : PP_ERROR_FAILED); | 237 succeeded ? PP_OK : PP_ERROR_FAILED); |
| 239 } | 238 } |
| 240 | 239 |
| 241 void FlashUDPSocket::OnRecvFromCompleted(bool succeeded, | 240 void UDPSocket::OnRecvFromCompleted(bool succeeded, |
| 242 const std::string& data, | 241 const std::string& data, |
| 243 const PP_NetAddress_Private& addr) { | 242 const PP_NetAddress_Private& addr) { |
| 244 if (!recvfrom_callback_.func || !read_buffer_) { | 243 if (!recvfrom_callback_.func || !read_buffer_) { |
| 245 NOTREACHED(); | 244 NOTREACHED(); |
| 246 return; | 245 return; |
| 247 } | 246 } |
| 248 | 247 |
| 249 if (succeeded) { | 248 if (succeeded) { |
| 250 CHECK_LE(static_cast<int32_t>(data.size()), bytes_to_read_); | 249 CHECK_LE(static_cast<int32_t>(data.size()), bytes_to_read_); |
| 251 if (!data.empty()) | 250 if (!data.empty()) |
| 252 memcpy(read_buffer_, data.c_str(), data.size()); | 251 memcpy(read_buffer_, data.c_str(), data.size()); |
| 253 } | 252 } |
| 254 read_buffer_ = NULL; | 253 read_buffer_ = NULL; |
| 255 bytes_to_read_ = -1; | 254 bytes_to_read_ = -1; |
| 256 recvfrom_addr_ = addr; | 255 recvfrom_addr_ = addr; |
| 257 | 256 |
| 258 PP_RunAndClearCompletionCallback( | 257 PP_RunAndClearCompletionCallback( |
| 259 &recvfrom_callback_, | 258 &recvfrom_callback_, |
| 260 succeeded ? static_cast<int32_t>(data.size()) : | 259 succeeded ? static_cast<int32_t>(data.size()) : |
| 261 static_cast<int32_t>(PP_ERROR_FAILED)); | 260 static_cast<int32_t>(PP_ERROR_FAILED)); |
| 262 } | 261 } |
| 263 | 262 |
| 264 void FlashUDPSocket::OnSendToCompleted(bool succeeded, | 263 void UDPSocket::OnSendToCompleted(bool succeeded, int32_t bytes_written) { |
| 265 int32_t bytes_written) { | |
| 266 if (!sendto_callback_.func) { | 264 if (!sendto_callback_.func) { |
| 267 NOTREACHED(); | 265 NOTREACHED(); |
| 268 return; | 266 return; |
| 269 } | 267 } |
| 270 | 268 |
| 271 PP_RunAndClearCompletionCallback( | 269 PP_RunAndClearCompletionCallback( |
| 272 &sendto_callback_, | 270 &sendto_callback_, |
| 273 succeeded ? bytes_written : static_cast<int32_t>(PP_ERROR_FAILED)); | 271 succeeded ? bytes_written : static_cast<int32_t>(PP_ERROR_FAILED)); |
| 274 } | 272 } |
| 275 | 273 |
| 276 void FlashUDPSocket::PostAbortAndClearIfNecessary( | 274 void UDPSocket::PostAbortAndClearIfNecessary( |
| 277 PP_CompletionCallback* callback) { | 275 PP_CompletionCallback* callback) { |
| 278 DCHECK(callback); | 276 DCHECK(callback); |
| 279 | 277 |
| 280 if (callback->func) { | 278 if (callback->func) { |
| 281 MessageLoop::current()->PostTask(FROM_HERE, | 279 MessageLoop::current()->PostTask(FROM_HERE, |
| 282 new AbortCallbackTask(*callback)); | 280 new AbortCallbackTask(*callback)); |
| 283 *callback = PP_BlockUntilComplete(); | 281 *callback = PP_BlockUntilComplete(); |
| 284 } | 282 } |
| 285 } | 283 } |
| 286 } // namespace | 284 } // namespace |
| 287 | 285 |
| 288 PPB_Flash_UDPSocket_Proxy::PPB_Flash_UDPSocket_Proxy(Dispatcher* dispatcher) | 286 PPB_UDPSocket_Private_Proxy::PPB_UDPSocket_Private_Proxy(Dispatcher* dispatcher) |
| 289 : InterfaceProxy(dispatcher) { | 287 : InterfaceProxy(dispatcher) { |
| 290 } | 288 } |
| 291 | 289 |
| 292 PPB_Flash_UDPSocket_Proxy::~PPB_Flash_UDPSocket_Proxy() { | 290 PPB_UDPSocket_Private_Proxy::~PPB_UDPSocket_Private_Proxy() { |
| 293 } | 291 } |
| 294 | 292 |
| 295 // static | 293 // static |
| 296 PP_Resource PPB_Flash_UDPSocket_Proxy::CreateProxyResource( | 294 PP_Resource PPB_UDPSocket_Private_Proxy::CreateProxyResource( |
| 297 PP_Instance instance) { | 295 PP_Instance instance) { |
| 298 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); | 296 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); |
| 299 if (!dispatcher) | 297 if (!dispatcher) |
| 300 return 0; | 298 return 0; |
| 301 | 299 |
| 302 uint32 socket_id = 0; | 300 uint32 socket_id = 0; |
| 303 dispatcher->SendToBrowser(new PpapiHostMsg_PPBFlashUDPSocket_Create( | 301 dispatcher->SendToBrowser(new PpapiHostMsg_PPBUDPSocket_Create( |
| 304 API_ID_PPB_FLASH_UDPSOCKET, dispatcher->plugin_dispatcher_id(), | 302 API_ID_PPB_UDPSOCKET_PRIVATE, dispatcher->plugin_dispatcher_id(), |
| 305 &socket_id)); | 303 &socket_id)); |
| 306 if (socket_id == 0) | 304 if (socket_id == 0) |
| 307 return 0; | 305 return 0; |
| 308 | 306 |
| 309 return (new FlashUDPSocket(HostResource::MakeInstanceOnly(instance), | 307 return (new UDPSocket(HostResource::MakeInstanceOnly(instance), |
| 310 socket_id))->GetReference(); | 308 socket_id))->GetReference(); |
| 311 } | 309 } |
| 312 | 310 |
| 313 bool PPB_Flash_UDPSocket_Proxy::OnMessageReceived(const IPC::Message& msg) { | 311 bool PPB_UDPSocket_Private_Proxy::OnMessageReceived(const IPC::Message& msg) { |
| 314 bool handled = true; | 312 bool handled = true; |
| 315 IPC_BEGIN_MESSAGE_MAP(PPB_Flash_UDPSocket_Proxy, msg) | 313 IPC_BEGIN_MESSAGE_MAP(PPB_UDPSocket_Private_Proxy, msg) |
| 316 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashUDPSocket_BindACK, | 314 IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_BindACK, |
| 317 OnMsgBindACK) | 315 OnMsgBindACK) |
| 318 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashUDPSocket_RecvFromACK, | 316 IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_RecvFromACK, |
| 319 OnMsgRecvFromACK) | 317 OnMsgRecvFromACK) |
| 320 IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashUDPSocket_SendToACK, | 318 IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_SendToACK, |
| 321 OnMsgSendToACK) | 319 OnMsgSendToACK) |
| 322 IPC_MESSAGE_UNHANDLED(handled = false) | 320 IPC_MESSAGE_UNHANDLED(handled = false) |
| 323 IPC_END_MESSAGE_MAP() | 321 IPC_END_MESSAGE_MAP() |
| 324 return handled; | 322 return handled; |
| 325 } | 323 } |
| 326 | 324 |
| 327 void PPB_Flash_UDPSocket_Proxy::OnMsgBindACK( | 325 void PPB_UDPSocket_Private_Proxy::OnMsgBindACK( |
| 328 uint32 /* plugin_dispatcher_id */, | 326 uint32 /* plugin_dispatcher_id */, |
| 329 uint32 socket_id, | 327 uint32 socket_id, |
| 330 bool succeeded) { | 328 bool succeeded) { |
| 331 if (!g_id_to_socket) { | 329 if (!g_id_to_socket) { |
| 332 NOTREACHED(); | 330 NOTREACHED(); |
| 333 return; | 331 return; |
| 334 } | 332 } |
| 335 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | 333 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
| 336 if (iter == g_id_to_socket->end()) | 334 if (iter == g_id_to_socket->end()) |
| 337 return; | 335 return; |
| 338 iter->second->OnBindCompleted(succeeded); | 336 iter->second->OnBindCompleted(succeeded); |
| 339 } | 337 } |
| 340 | 338 |
| 341 void PPB_Flash_UDPSocket_Proxy::OnMsgRecvFromACK( | 339 void PPB_UDPSocket_Private_Proxy::OnMsgRecvFromACK( |
| 342 uint32 /* plugin_dispatcher_id */, | 340 uint32 /* plugin_dispatcher_id */, |
| 343 uint32 socket_id, | 341 uint32 socket_id, |
| 344 bool succeeded, | 342 bool succeeded, |
| 345 const std::string& data, | 343 const std::string& data, |
| 346 const PP_NetAddress_Private& addr) { | 344 const PP_NetAddress_Private& addr) { |
| 347 if (!g_id_to_socket) { | 345 if (!g_id_to_socket) { |
| 348 NOTREACHED(); | 346 NOTREACHED(); |
| 349 return; | 347 return; |
| 350 } | 348 } |
| 351 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | 349 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
| 352 if (iter == g_id_to_socket->end()) | 350 if (iter == g_id_to_socket->end()) |
| 353 return; | 351 return; |
| 354 iter->second->OnRecvFromCompleted(succeeded, data, addr); | 352 iter->second->OnRecvFromCompleted(succeeded, data, addr); |
| 355 } | 353 } |
| 356 | 354 |
| 357 void PPB_Flash_UDPSocket_Proxy::OnMsgSendToACK( | 355 void PPB_UDPSocket_Private_Proxy::OnMsgSendToACK( |
| 358 uint32 /* plugin_dispatcher_id */, | 356 uint32 /* plugin_dispatcher_id */, |
| 359 uint32 socket_id, | 357 uint32 socket_id, |
| 360 bool succeeded, | 358 bool succeeded, |
| 361 int32_t bytes_written) { | 359 int32_t bytes_written) { |
| 362 if (!g_id_to_socket) { | 360 if (!g_id_to_socket) { |
| 363 NOTREACHED(); | 361 NOTREACHED(); |
| 364 return; | 362 return; |
| 365 } | 363 } |
| 366 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); | 364 IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
| 367 if (iter == g_id_to_socket->end()) | 365 if (iter == g_id_to_socket->end()) |
| 368 return; | 366 return; |
| 369 iter->second->OnSendToCompleted(succeeded, bytes_written); | 367 iter->second->OnSendToCompleted(succeeded, bytes_written); |
| 370 } | 368 } |
| 371 | 369 |
| 372 } // namespace proxy | 370 } // namespace proxy |
| 373 } // namespace ppapi | 371 } // namespace ppapi |
| OLD | NEW |