diff options
author | mtilburg@adobe.com <mtilburg@adobe.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-26 22:12:56 +0000 |
---|---|---|
committer | mtilburg@adobe.com <mtilburg@adobe.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-26 22:12:56 +0000 |
commit | 7813eb0bc4ed845c361493ef3e1f0290fe16c3b0 (patch) | |
tree | f0c740d8a536c7a4c120016af0c99c43a9ae83e8 /ppapi/thunk | |
parent | a3e2de75e309b527cd694b16d23100bbec1710d9 (diff) | |
download | chromium_src-7813eb0bc4ed845c361493ef3e1f0290fe16c3b0.zip chromium_src-7813eb0bc4ed845c361493ef3e1f0290fe16c3b0.tar.gz chromium_src-7813eb0bc4ed845c361493ef3e1f0290fe16c3b0.tar.bz2 |
Add Pepper API to use UDP
author: mtilburg@adobe.com
BUG=none
TEST=tested with pepper flash
Review URL: http://codereview.chromium.org/8036036
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102817 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/thunk')
-rw-r--r-- | ppapi/thunk/ppb_flash_udp_socket_api.h | 34 | ||||
-rw-r--r-- | ppapi/thunk/ppb_flash_udp_socket_thunk.cc | 98 | ||||
-rw-r--r-- | ppapi/thunk/resource_creation_api.h | 1 | ||||
-rw-r--r-- | ppapi/thunk/thunk.h | 2 |
4 files changed, 135 insertions, 0 deletions
diff --git a/ppapi/thunk/ppb_flash_udp_socket_api.h b/ppapi/thunk/ppb_flash_udp_socket_api.h new file mode 100644 index 0000000..afc7738 --- /dev/null +++ b/ppapi/thunk/ppb_flash_udp_socket_api.h @@ -0,0 +1,34 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef PPAPI_THUNK_PPB_FLASH_UDP_SOCKET_API_H_ +#define PPAPI_THUNK_PPB_FLASH_UDP_SOCKET_API_H_ + +#include "ppapi/c/private/ppb_flash_udp_socket.h" + +namespace ppapi { +namespace thunk { + +class PPB_Flash_UDPSocket_API { + public: + virtual ~PPB_Flash_UDPSocket_API() {} + + virtual int32_t Bind(const PP_Flash_NetAddress* addr, + PP_CompletionCallback callback) = 0; + virtual int32_t RecvFrom(char* buffer, + int32_t num_bytes, + PP_CompletionCallback callback) = 0; + virtual PP_Bool GetRecvFromAddress(PP_Flash_NetAddress* addr) = 0; + virtual int32_t SendTo(const char* buffer, + int32_t num_bytes, + const PP_Flash_NetAddress* addr, + PP_CompletionCallback callback) = 0; + virtual void Close() = 0; +}; + +} // namespace thunk +} // namespace ppapi + +#endif // PPAPI_THUNK_PPB_FLASH_UDP_SOCKET_API_H_ + diff --git a/ppapi/thunk/ppb_flash_udp_socket_thunk.cc b/ppapi/thunk/ppb_flash_udp_socket_thunk.cc new file mode 100644 index 0000000..ee2e13c --- /dev/null +++ b/ppapi/thunk/ppb_flash_udp_socket_thunk.cc @@ -0,0 +1,98 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ppapi/c/pp_completion_callback.h" +#include "ppapi/c/pp_errors.h" +#include "ppapi/c/private/ppb_flash_udp_socket.h" +#include "ppapi/thunk/common.h" +#include "ppapi/thunk/enter.h" +#include "ppapi/thunk/ppb_flash_udp_socket_api.h" +#include "ppapi/thunk/resource_creation_api.h" +#include "ppapi/thunk/thunk.h" + +namespace ppapi { +namespace thunk { + +namespace { + +PP_Resource Create(PP_Instance instance) { + EnterFunction<ResourceCreationAPI> enter(instance, true); + if (enter.failed()) + return 0; + return enter.functions()->CreateFlashUDPSocket(instance); +} + +PP_Bool IsFlashUDPSocket(PP_Resource resource) { + EnterResource<PPB_Flash_UDPSocket_API> enter(resource, false); + return PP_FromBool(enter.succeeded()); +} + +int32_t Bind(PP_Resource udp_socket, + const PP_Flash_NetAddress *addr, + PP_CompletionCallback callback) { + EnterResource<PPB_Flash_UDPSocket_API> enter(udp_socket, true); + if (enter.failed()) + return MayForceCallback(callback, PP_ERROR_BADRESOURCE); + int32_t result = enter.object()->Bind(addr, callback); + return MayForceCallback(callback, result); +} + +int32_t RecvFrom(PP_Resource udp_socket, + char* buffer, + int32_t num_bytes, + PP_CompletionCallback callback) { + EnterResource<PPB_Flash_UDPSocket_API> enter(udp_socket, true); + if (enter.failed()) + return MayForceCallback(callback, PP_ERROR_BADRESOURCE); + int32_t result = enter.object()->RecvFrom(buffer, + num_bytes, + callback); + return MayForceCallback(callback, result); +} + +PP_Bool GetRecvFromAddress(PP_Resource udp_socket, + PP_Flash_NetAddress* addr) { + EnterResource<PPB_Flash_UDPSocket_API> enter(udp_socket, true); + if (enter.failed()) + return PP_FALSE; + return enter.object()->GetRecvFromAddress(addr); +} + +int32_t SendTo(PP_Resource udp_socket, + const char* buffer, + int32_t num_bytes, + const PP_Flash_NetAddress* addr, + PP_CompletionCallback callback) { + EnterResource<PPB_Flash_UDPSocket_API> enter(udp_socket, true); + if (enter.failed()) + return MayForceCallback(callback, PP_ERROR_BADRESOURCE); + int32_t result = enter.object()->SendTo(buffer, num_bytes, addr, callback); + return MayForceCallback(callback, result); +} + +void Close(PP_Resource udp_socket) { + EnterResource<PPB_Flash_UDPSocket_API> enter(udp_socket, true); + if (enter.succeeded()) + enter.object()->Close(); +} + +const PPB_Flash_UDPSocket g_ppb_flash_udp_socket_thunk = { + &Create, + &IsFlashUDPSocket, + &Bind, + &RecvFrom, + &GetRecvFromAddress, + &SendTo, + &Close +}; + +} // namespace + +const PPB_Flash_UDPSocket* GetPPB_Flash_UDPSocket_Thunk() { + return &g_ppb_flash_udp_socket_thunk; +} + +} // namespace thunk +} // namespace ppapi + diff --git a/ppapi/thunk/resource_creation_api.h b/ppapi/thunk/resource_creation_api.h index 5c92f38..1fbd93f 100644 --- a/ppapi/thunk/resource_creation_api.h +++ b/ppapi/thunk/resource_creation_api.h @@ -71,6 +71,7 @@ class ResourceCreationAPI { const PP_Flash_Menu* menu_data) = 0; virtual PP_Resource CreateFlashNetConnector(PP_Instance instance) = 0; virtual PP_Resource CreateFlashTCPSocket(PP_Instance instace) = 0; + virtual PP_Resource CreateFlashUDPSocket(PP_Instance instace) = 0; // Note: can't be called CreateFont due to Windows #defines. virtual PP_Resource CreateFontObject( PP_Instance instance, diff --git a/ppapi/thunk/thunk.h b/ppapi/thunk/thunk.h index e33a5ee..fe90eff 100644 --- a/ppapi/thunk/thunk.h +++ b/ppapi/thunk/thunk.h @@ -35,6 +35,7 @@ struct PPB_FileIOTrusted; struct PPB_Flash_Menu; struct PPB_Flash_NetConnector; struct PPB_Flash_TCPSocket; +struct PPB_Flash_UDPSocket; struct PPB_Graphics3D; struct PPB_Graphics3DTrusted; struct PPB_ImageDataTrusted; @@ -60,6 +61,7 @@ PPAPI_THUNK_EXPORT const PPB_Flash_Menu* GetPPB_Flash_Menu_Thunk(); PPAPI_THUNK_EXPORT const PPB_Flash_NetConnector* GetPPB_Flash_NetConnector_Thunk(); PPAPI_THUNK_EXPORT const PPB_Flash_TCPSocket* GetPPB_Flash_TCPSocket_Thunk(); +PPAPI_THUNK_EXPORT const PPB_Flash_UDPSocket* GetPPB_Flash_UDPSocket_Thunk(); PPAPI_THUNK_EXPORT const PPB_Graphics3DTrusted* GetPPB_Graphics3DTrusted_Thunk(); PPAPI_THUNK_EXPORT const PPB_ImageDataTrusted* GetPPB_ImageDataTrusted_Thunk(); |