| // 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<TrackedCallback> 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<TrackedCallback> 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<TrackedCallback> callback) { |
| return SendToImpl(buffer, num_bytes, addr, callback); |
| } |
| |
| void UDPSocketPrivateResource::Close() { |
| CloseImpl(); |
| } |
| |
| } // namespace proxy |
| } // namespace ppapi |