// 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/udp_socket_private_resource.h" #include "base/logging.h" #include "ppapi/c/ppb_udp_socket.h" #include "ppapi/shared_impl/tracked_callback.h" namespace ppapi { namespace proxy { UDPSocketPrivateResource::UDPSocketPrivateResource(Connection connection, PP_Instance instance) : UDPSocketResourceBase(connection, instance, true) { } UDPSocketPrivateResource::~UDPSocketPrivateResource() { } thunk::PPB_UDPSocket_Private_API* UDPSocketPrivateResource::AsPPB_UDPSocket_Private_API() { return this; } int32_t UDPSocketPrivateResource::SetSocketFeature( PP_UDPSocketFeature_Private name, PP_Var value) { PP_UDPSocket_Option public_name = PP_UDPSOCKET_OPTION_ADDRESS_REUSE; switch (name) { case PP_UDPSOCKETFEATURE_PRIVATE_ADDRESS_REUSE: // |public_name| has been initialized above. break; case PP_UDPSOCKETFEATURE_PRIVATE_BROADCAST: public_name = PP_UDPSOCKET_OPTION_BROADCAST; break; case PP_UDPSOCKETFEATURE_PRIVATE_COUNT: return PP_ERROR_BADARGUMENT; default: NOTREACHED(); return PP_ERROR_BADARGUMENT; } int32_t result = SetOptionImpl(public_name, value, true, // Check bind() state. NULL); return result == PP_OK_COMPLETIONPENDING ? PP_OK : result; } int32_t UDPSocketPrivateResource::Bind( const PP_NetAddress_Private* addr, scoped_refptr callback) { return BindImpl(addr, callback); } PP_Bool UDPSocketPrivateResource::GetBoundAddress(PP_NetAddress_Private* addr) { return GetBoundAddressImpl(addr); } int32_t UDPSocketPrivateResource::RecvFrom( char* buffer, int32_t num_bytes, scoped_refptr callback) { return RecvFromImpl(buffer, num_bytes, NULL, callback); } PP_Bool UDPSocketPrivateResource::GetRecvFromAddress( PP_NetAddress_Private* addr) { return GetRecvFromAddressImpl(addr); } int32_t UDPSocketPrivateResource::SendTo( const char* buffer, int32_t num_bytes, const PP_NetAddress_Private* addr, scoped_refptr callback) { return SendToImpl(buffer, num_bytes, addr, callback); } void UDPSocketPrivateResource::Close() { CloseImpl(); } } // namespace proxy } // namespace ppapi