Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ppapi / thunk / ppb_udp_socket_thunk.cc
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // From ppb_udp_socket.idl modified Mon Jun 24 15:10:54 2013.
6
7 #include "ppapi/c/pp_completion_callback.h"
8 #include "ppapi/c/pp_errors.h"
9 #include "ppapi/c/ppb_udp_socket.h"
10 #include "ppapi/shared_impl/tracked_callback.h"
11 #include "ppapi/thunk/enter.h"
12 #include "ppapi/thunk/ppapi_thunk_export.h"
13 #include "ppapi/thunk/ppb_udp_socket_api.h"
14
15 namespace ppapi {
16 namespace thunk {
17
18 namespace {
19
20 PP_Resource Create(PP_Instance instance) {
21   VLOG(4) << "PPB_UDPSocket::Create()";
22   EnterResourceCreation enter(instance);
23   if (enter.failed())
24     return 0;
25   return enter.functions()->CreateUDPSocket(instance);
26 }
27
28 PP_Bool IsUDPSocket(PP_Resource resource) {
29   VLOG(4) << "PPB_UDPSocket::IsUDPSocket()";
30   EnterResource<PPB_UDPSocket_API> enter(resource, false);
31   return PP_FromBool(enter.succeeded());
32 }
33
34 int32_t Bind(PP_Resource udp_socket,
35              PP_Resource addr,
36              struct PP_CompletionCallback callback) {
37   VLOG(4) << "PPB_UDPSocket::Bind()";
38   EnterResource<PPB_UDPSocket_API> enter(udp_socket, callback, true);
39   if (enter.failed())
40     return enter.retval();
41   return enter.SetResult(enter.object()->Bind(addr, enter.callback()));
42 }
43
44 PP_Resource GetBoundAddress(PP_Resource udp_socket) {
45   VLOG(4) << "PPB_UDPSocket::GetBoundAddress()";
46   EnterResource<PPB_UDPSocket_API> enter(udp_socket, true);
47   if (enter.failed())
48     return 0;
49   return enter.object()->GetBoundAddress();
50 }
51
52 int32_t RecvFrom(PP_Resource udp_socket,
53                  char* buffer,
54                  int32_t num_bytes,
55                  PP_Resource* addr,
56                  struct PP_CompletionCallback callback) {
57   VLOG(4) << "PPB_UDPSocket::RecvFrom()";
58   EnterResource<PPB_UDPSocket_API> enter(udp_socket, callback, true);
59   if (enter.failed())
60     return enter.retval();
61   return enter.SetResult(
62       enter.object()->RecvFrom(buffer, num_bytes, addr, enter.callback()));
63 }
64
65 int32_t SendTo(PP_Resource udp_socket,
66                const char* buffer,
67                int32_t num_bytes,
68                PP_Resource addr,
69                struct PP_CompletionCallback callback) {
70   VLOG(4) << "PPB_UDPSocket::SendTo()";
71   EnterResource<PPB_UDPSocket_API> enter(udp_socket, callback, true);
72   if (enter.failed())
73     return enter.retval();
74   return enter.SetResult(
75       enter.object()->SendTo(buffer, num_bytes, addr, enter.callback()));
76 }
77
78 void Close(PP_Resource udp_socket) {
79   VLOG(4) << "PPB_UDPSocket::Close()";
80   EnterResource<PPB_UDPSocket_API> enter(udp_socket, true);
81   if (enter.failed())
82     return;
83   enter.object()->Close();
84 }
85
86 int32_t SetOption(PP_Resource udp_socket,
87                   PP_UDPSocket_Option name,
88                   struct PP_Var value,
89                   struct PP_CompletionCallback callback) {
90   VLOG(4) << "PPB_UDPSocket::SetOption()";
91   EnterResource<PPB_UDPSocket_API> enter(udp_socket, callback, true);
92   if (enter.failed())
93     return enter.retval();
94   return enter.SetResult(
95       enter.object()->SetOption(name, value, enter.callback()));
96 }
97
98 const PPB_UDPSocket_1_0 g_ppb_udpsocket_thunk_1_0 = {&Create,
99                                                      &IsUDPSocket,
100                                                      &Bind,
101                                                      &GetBoundAddress,
102                                                      &RecvFrom,
103                                                      &SendTo,
104                                                      &Close,
105                                                      &SetOption};
106
107 }  // namespace
108
109 PPAPI_THUNK_EXPORT const PPB_UDPSocket_1_0* GetPPB_UDPSocket_1_0_Thunk() {
110   return &g_ppb_udpsocket_thunk_1_0;
111 }
112
113 }  // namespace thunk
114 }  // namespace ppapi