| Index: ppapi/proxy/ppb_flash_net_connector_proxy.cc
|
| diff --git a/ppapi/proxy/ppb_flash_net_connector_proxy.cc b/ppapi/proxy/ppb_flash_net_connector_proxy.cc
|
| deleted file mode 100644
|
| index 0b7ba10710ad6ebab4262442e38f2c7bddb06280..0000000000000000000000000000000000000000
|
| --- a/ppapi/proxy/ppb_flash_net_connector_proxy.cc
|
| +++ /dev/null
|
| @@ -1,306 +0,0 @@
|
| -// Copyright (c) 2012 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/proxy/ppb_flash_net_connector_proxy.h"
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include "base/bind.h"
|
| -#include "ppapi/c/pp_errors.h"
|
| -#include "ppapi/c/private/ppb_flash_net_connector.h"
|
| -#include "ppapi/proxy/enter_proxy.h"
|
| -#include "ppapi/proxy/plugin_dispatcher.h"
|
| -#include "ppapi/proxy/ppapi_messages.h"
|
| -#include "ppapi/proxy/serialized_var.h"
|
| -#include "ppapi/shared_impl/tracked_callback.h"
|
| -#include "ppapi/thunk/enter.h"
|
| -#include "ppapi/thunk/ppb_flash_net_connector_api.h"
|
| -#include "ppapi/thunk/resource_creation_api.h"
|
| -#include "ppapi/thunk/thunk.h"
|
| -
|
| -using ppapi::thunk::EnterFunctionNoLock;
|
| -using ppapi::thunk::PPB_Flash_NetConnector_API;
|
| -using ppapi::thunk::ResourceCreationAPI;
|
| -
|
| -namespace ppapi {
|
| -namespace proxy {
|
| -
|
| -std::string NetAddressToString(const PP_NetAddress_Private& addr) {
|
| - return std::string(addr.data, std::min(static_cast<size_t>(addr.size),
|
| - sizeof(addr.data)));
|
| -}
|
| -
|
| -void StringToNetAddress(const std::string& str, PP_NetAddress_Private* addr) {
|
| - addr->size = std::min(str.size(), sizeof(addr->data));
|
| - memcpy(addr->data, str.data(), addr->size);
|
| -}
|
| -
|
| -class FlashNetConnector : public PPB_Flash_NetConnector_API,
|
| - public Resource {
|
| - public:
|
| - explicit FlashNetConnector(const HostResource& resource);
|
| - virtual ~FlashNetConnector();
|
| -
|
| - // Resource overrides.
|
| - virtual PPB_Flash_NetConnector_API* AsPPB_Flash_NetConnector_API() OVERRIDE;
|
| -
|
| - // PPB_Flash_NetConnector_API implementation.
|
| - virtual int32_t ConnectTcp(const char* host,
|
| - uint16_t port,
|
| - PP_FileHandle* socket_out,
|
| - PP_NetAddress_Private* local_addr_out,
|
| - PP_NetAddress_Private* remote_addr_out,
|
| - PP_CompletionCallback callback) OVERRIDE;
|
| - virtual int32_t ConnectTcpAddress(const PP_NetAddress_Private* addr,
|
| - PP_FileHandle* socket_out,
|
| - PP_NetAddress_Private* local_addr_out,
|
| - PP_NetAddress_Private* remote_addr_out,
|
| - PP_CompletionCallback callback) OVERRIDE;
|
| -
|
| - void ConnectComplete(int32_t result,
|
| - base::PlatformFile file,
|
| - const std::string& local_addr_as_string,
|
| - const std::string& remote_addr_as_string);
|
| -
|
| - private:
|
| - // Backend for both ConnectTcp and ConnectTcpAddress. To keep things generic,
|
| - // the message is passed in (on error, it's deleted).
|
| - int32_t ConnectWithMessage(IPC::Message* msg,
|
| - PP_FileHandle* socket_out,
|
| - PP_NetAddress_Private* local_addr_out,
|
| - PP_NetAddress_Private* remote_addr_out,
|
| - PP_CompletionCallback callback);
|
| -
|
| - scoped_refptr<TrackedCallback> callback_;
|
| - PP_FileHandle* socket_out_;
|
| - PP_NetAddress_Private* local_addr_out_;
|
| - PP_NetAddress_Private* remote_addr_out_;
|
| -};
|
| -
|
| -FlashNetConnector::FlashNetConnector(const HostResource& resource)
|
| - : Resource(OBJECT_IS_PROXY, resource),
|
| - socket_out_(NULL),
|
| - local_addr_out_(NULL),
|
| - remote_addr_out_(NULL) {
|
| -}
|
| -
|
| -FlashNetConnector::~FlashNetConnector() {
|
| -}
|
| -
|
| -PPB_Flash_NetConnector_API* FlashNetConnector::AsPPB_Flash_NetConnector_API() {
|
| - return this;
|
| -}
|
| -
|
| -int32_t FlashNetConnector::ConnectTcp(
|
| - const char* host,
|
| - uint16_t port,
|
| - PP_FileHandle* socket_out,
|
| - PP_NetAddress_Private* local_addr_out,
|
| - PP_NetAddress_Private* remote_addr_out,
|
| - PP_CompletionCallback callback) {
|
| - return ConnectWithMessage(
|
| - new PpapiHostMsg_PPBFlashNetConnector_ConnectTcp(
|
| - API_ID_PPB_FLASH_NETCONNECTOR, host_resource(), host, port),
|
| - socket_out, local_addr_out, remote_addr_out, callback);
|
| -}
|
| -
|
| -int32_t FlashNetConnector::ConnectTcpAddress(
|
| - const PP_NetAddress_Private* addr,
|
| - PP_FileHandle* socket_out,
|
| - PP_NetAddress_Private* local_addr_out,
|
| - PP_NetAddress_Private* remote_addr_out,
|
| - PP_CompletionCallback callback) {
|
| - return ConnectWithMessage(
|
| - new PpapiHostMsg_PPBFlashNetConnector_ConnectTcpAddress(
|
| - API_ID_PPB_FLASH_NETCONNECTOR,
|
| - host_resource(), NetAddressToString(*addr)),
|
| - socket_out, local_addr_out, remote_addr_out, callback);
|
| -}
|
| -
|
| -void FlashNetConnector::ConnectComplete(
|
| - int32_t result,
|
| - base::PlatformFile file,
|
| - const std::string& local_addr_as_string,
|
| - const std::string& remote_addr_as_string) {
|
| - if (TrackedCallback::IsPending(callback_)) {
|
| - base::ClosePlatformFile(file);
|
| - return;
|
| - }
|
| -
|
| - *socket_out_ = static_cast<PP_FileHandle>(file);
|
| - StringToNetAddress(local_addr_as_string, local_addr_out_);
|
| - StringToNetAddress(remote_addr_as_string, remote_addr_out_);
|
| -
|
| - TrackedCallback::ClearAndRun(&callback_, result);
|
| -}
|
| -
|
| -int32_t FlashNetConnector::ConnectWithMessage(
|
| - IPC::Message* msg,
|
| - PP_FileHandle* socket_out,
|
| - PP_NetAddress_Private* local_addr_out,
|
| - PP_NetAddress_Private* remote_addr_out,
|
| - PP_CompletionCallback callback) {
|
| - scoped_ptr<IPC::Message> msg_deletor(msg);
|
| - if (TrackedCallback::IsPending(callback_))
|
| - return PP_ERROR_INPROGRESS; // Can only have one pending request.
|
| -
|
| - // Send the request, it will call us back via ConnectACK.
|
| - PluginDispatcher::GetForResource(this)->Send(msg_deletor.release());
|
| -
|
| - callback_ = new TrackedCallback(this, callback);
|
| - socket_out_ = socket_out;
|
| - local_addr_out_ = local_addr_out;
|
| - remote_addr_out_ = remote_addr_out;
|
| - return PP_OK_COMPLETIONPENDING;
|
| -}
|
| -
|
| -// Contains the data that the host interface will write to so we can send it
|
| -// to the plugin. This is created when a request is initiated, and deleted in
|
| -// the callback handler.
|
| -struct PPB_Flash_NetConnector_Proxy::ConnectCallbackInfo {
|
| - ConnectCallbackInfo(const HostResource& r) : resource(r), handle(0) {
|
| - memset(&local_addr, 0, sizeof(local_addr));
|
| - memset(&remote_addr, 0, sizeof(remote_addr));
|
| - }
|
| -
|
| - HostResource resource;
|
| -
|
| - PP_FileHandle handle;
|
| - PP_NetAddress_Private local_addr;
|
| - PP_NetAddress_Private remote_addr;
|
| -};
|
| -
|
| -PPB_Flash_NetConnector_Proxy::PPB_Flash_NetConnector_Proxy(
|
| - Dispatcher* dispatcher)
|
| - : InterfaceProxy(dispatcher),
|
| - callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
|
| -}
|
| -
|
| -PPB_Flash_NetConnector_Proxy::~PPB_Flash_NetConnector_Proxy() {
|
| -}
|
| -
|
| -// static
|
| -PP_Resource PPB_Flash_NetConnector_Proxy::CreateProxyResource(
|
| - PP_Instance instance) {
|
| - PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
|
| - if (!dispatcher)
|
| - return 0;
|
| -
|
| - HostResource result;
|
| - dispatcher->Send(new PpapiHostMsg_PPBFlashNetConnector_Create(
|
| - API_ID_PPB_FLASH_NETCONNECTOR, instance, &result));
|
| - if (result.is_null())
|
| - return 0;
|
| - return (new FlashNetConnector(result))->GetReference();
|
| -}
|
| -
|
| -bool PPB_Flash_NetConnector_Proxy::OnMessageReceived(const IPC::Message& msg) {
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(PPB_Flash_NetConnector_Proxy, msg)
|
| - IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlashNetConnector_Create,
|
| - OnMsgCreate)
|
| - IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlashNetConnector_ConnectTcp,
|
| - OnMsgConnectTcp)
|
| - IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBFlashNetConnector_ConnectTcpAddress,
|
| - OnMsgConnectTcpAddress)
|
| - IPC_MESSAGE_HANDLER(PpapiMsg_PPBFlashNetConnector_ConnectACK,
|
| - OnMsgConnectACK)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - return handled;
|
| -}
|
| -
|
| -void PPB_Flash_NetConnector_Proxy::OnMsgCreate(PP_Instance instance,
|
| - HostResource* result) {
|
| - thunk::EnterResourceCreation enter(instance);
|
| - if (enter.succeeded()) {
|
| - result->SetHostResource(
|
| - instance,
|
| - enter.functions()->CreateFlashNetConnector(instance));
|
| - }
|
| -}
|
| -
|
| -void PPB_Flash_NetConnector_Proxy::OnMsgConnectTcp(
|
| - const HostResource& resource,
|
| - const std::string& host,
|
| - uint16_t port) {
|
| - ConnectCallbackInfo* info = new ConnectCallbackInfo(resource);
|
| - pp::CompletionCallback callback = callback_factory_.NewOptionalCallback(
|
| - &PPB_Flash_NetConnector_Proxy::OnCompleteCallbackInHost, info);
|
| -
|
| - EnterHostFromHostResource<PPB_Flash_NetConnector_API> enter(resource);
|
| - int32_t result = PP_ERROR_BADRESOURCE;
|
| - if (enter.succeeded()) {
|
| - result = enter.object()->ConnectTcp(
|
| - host.c_str(), port, &info->handle, &info->local_addr,
|
| - &info->remote_addr, callback.pp_completion_callback());
|
| - }
|
| - if (result != PP_OK_COMPLETIONPENDING)
|
| - OnCompleteCallbackInHost(result, info);
|
| -}
|
| -
|
| -void PPB_Flash_NetConnector_Proxy::OnMsgConnectTcpAddress(
|
| - const HostResource& resource,
|
| - const std::string& net_address_as_string) {
|
| - ConnectCallbackInfo* info = new ConnectCallbackInfo(resource);
|
| - pp::CompletionCallback callback = callback_factory_.NewOptionalCallback(
|
| - &PPB_Flash_NetConnector_Proxy::OnCompleteCallbackInHost, info);
|
| -
|
| - PP_NetAddress_Private net_address;
|
| - StringToNetAddress(net_address_as_string, &net_address);
|
| -
|
| - EnterHostFromHostResource<PPB_Flash_NetConnector_API> enter(resource);
|
| - int32_t result = PP_ERROR_BADRESOURCE;
|
| - if (enter.succeeded()) {
|
| - result = enter.object()->ConnectTcpAddress(
|
| - &net_address, &info->handle, &info->local_addr, &info->remote_addr,
|
| - callback.pp_completion_callback());
|
| - }
|
| - if (result != PP_OK_COMPLETIONPENDING)
|
| - OnCompleteCallbackInHost(result, info);
|
| -}
|
| -
|
| -void PPB_Flash_NetConnector_Proxy::OnMsgConnectACK(
|
| - const HostResource& host_resource,
|
| - int32_t result,
|
| - IPC::PlatformFileForTransit handle,
|
| - const std::string& load_addr_as_string,
|
| - const std::string& remote_addr_as_string) {
|
| - base::PlatformFile platform_file =
|
| - IPC::PlatformFileForTransitToPlatformFile(handle);
|
| -
|
| - EnterPluginFromHostResource<PPB_Flash_NetConnector_API> enter(host_resource);
|
| - if (enter.failed()) {
|
| - base::ClosePlatformFile(platform_file);
|
| - return;
|
| - }
|
| - FlashNetConnector* object = static_cast<FlashNetConnector*>(enter.object());
|
| - object->ConnectComplete(result, platform_file,
|
| - load_addr_as_string, remote_addr_as_string);
|
| -}
|
| -
|
| -void PPB_Flash_NetConnector_Proxy::OnCompleteCallbackInHost(
|
| - int32_t result,
|
| - ConnectCallbackInfo* info) {
|
| - // Callback must always delete the info.
|
| - scoped_ptr<ConnectCallbackInfo> info_deletor(info);
|
| -
|
| - if (result == PP_OK) {
|
| - dispatcher()->Send(new PpapiMsg_PPBFlashNetConnector_ConnectACK(
|
| - API_ID_PPB_FLASH_NETCONNECTOR,
|
| - info->resource, result,
|
| - dispatcher()->ShareHandleWithRemote(
|
| - static_cast<base::PlatformFile>(info->handle), true),
|
| - NetAddressToString(info->local_addr),
|
| - NetAddressToString(info->remote_addr)));
|
| - } else {
|
| - dispatcher()->Send(new PpapiMsg_PPBFlashNetConnector_ConnectACK(
|
| - API_ID_PPB_FLASH_NETCONNECTOR,
|
| - info->resource, result,
|
| - IPC::InvalidPlatformFileForTransit(), std::string(), std::string()));
|
| - }
|
| -}
|
| -
|
| -} // namespace proxy
|
| -} // namespace ppapi
|
|
|