OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef PPAPI_CPP_DEV_UDP_SOCKET_DEV_H_ | 5 #ifndef PPAPI_CPP_DEV_UDP_SOCKET_DEV_H_ |
6 #define PPAPI_CPP_DEV_UDP_SOCKET_DEV_H_ | 6 #define PPAPI_CPP_DEV_UDP_SOCKET_DEV_H_ |
7 | 7 |
8 #include "ppapi/c/dev/ppb_udp_socket_dev.h" | 8 #include "ppapi/c/dev/ppb_udp_socket_dev.h" |
9 #include "ppapi/cpp/dev/net_address_dev.h" | 9 #include "ppapi/cpp/net_address.h" |
10 #include "ppapi/cpp/pass_ref.h" | 10 #include "ppapi/cpp/pass_ref.h" |
11 #include "ppapi/cpp/resource.h" | 11 #include "ppapi/cpp/resource.h" |
12 | 12 |
13 namespace pp { | 13 namespace pp { |
14 | 14 |
15 class CompletionCallback; | 15 class CompletionCallback; |
16 class InstanceHandle; | 16 class InstanceHandle; |
17 class Var; | 17 class Var; |
18 | 18 |
19 template <typename T> class CompletionCallbackWithOutput; | 19 template <typename T> class CompletionCallbackWithOutput; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 UDPSocket_Dev& operator=(const UDPSocket_Dev& other); | 59 UDPSocket_Dev& operator=(const UDPSocket_Dev& other); |
60 | 60 |
61 /// Static function for determining whether the browser supports the | 61 /// Static function for determining whether the browser supports the |
62 /// <code>PPB_UDPSocket_Dev</code> interface. | 62 /// <code>PPB_UDPSocket_Dev</code> interface. |
63 /// | 63 /// |
64 /// @return true if the interface is available, false otherwise. | 64 /// @return true if the interface is available, false otherwise. |
65 static bool IsAvailable(); | 65 static bool IsAvailable(); |
66 | 66 |
67 /// Binds the socket to the given address. | 67 /// Binds the socket to the given address. |
68 /// | 68 /// |
69 /// @param[in] addr A <code>NetAddress_Dev</code> object. | 69 /// @param[in] addr A <code>NetAddress</code> object. |
70 /// @param[in] callback A <code>CompletionCallback</code> to be called upon | 70 /// @param[in] callback A <code>CompletionCallback</code> to be called upon |
71 /// completion. | 71 /// completion. |
72 /// | 72 /// |
73 /// @return An int32_t containing an error code from <code>pp_errors.h</code>. | 73 /// @return An int32_t containing an error code from <code>pp_errors.h</code>. |
74 /// <code>PP_ERROR_NOACCESS</code> will be returned if the caller doesn't have | 74 /// <code>PP_ERROR_NOACCESS</code> will be returned if the caller doesn't have |
75 /// required permissions. <code>PP_ERROR_ADDRESS_IN_USE</code> will be | 75 /// required permissions. <code>PP_ERROR_ADDRESS_IN_USE</code> will be |
76 /// returned if the address is already in use. | 76 /// returned if the address is already in use. |
77 int32_t Bind(const NetAddress_Dev& addr, | 77 int32_t Bind(const NetAddress& addr, |
78 const CompletionCallback& callback); | 78 const CompletionCallback& callback); |
79 | 79 |
80 /// Get the address that the socket is bound to. The socket must be bound. | 80 /// Get the address that the socket is bound to. The socket must be bound. |
81 /// | 81 /// |
82 /// @return A <code>NetAddress_Dev</code> object. The object will be null | 82 /// @return A <code>NetAddress</code> object. The object will be null |
83 /// (i.e., is_null() returns true) on failure. | 83 /// (i.e., is_null() returns true) on failure. |
84 NetAddress_Dev GetBoundAddress(); | 84 NetAddress GetBoundAddress(); |
85 | 85 |
86 /// Receives data from the socket and stores the source address. The socket | 86 /// Receives data from the socket and stores the source address. The socket |
87 /// must be bound. | 87 /// must be bound. |
88 /// | 88 /// |
89 /// <strong>Caveat:</strong> You should be careful about the lifetime of | 89 /// <strong>Caveat:</strong> You should be careful about the lifetime of |
90 /// <code>buffer</code>. Typically you will use a | 90 /// <code>buffer</code>. Typically you will use a |
91 /// <code>CompletionCallbackFactory</code> to scope callbacks to the lifetime | 91 /// <code>CompletionCallbackFactory</code> to scope callbacks to the lifetime |
92 /// of your class. When your class goes out of scope, the callback factory | 92 /// of your class. When your class goes out of scope, the callback factory |
93 /// will not actually cancel the operation, but will rather just skip issuing | 93 /// will not actually cancel the operation, but will rather just skip issuing |
94 /// the callback on your class. This means that if the underlying | 94 /// the callback on your class. This means that if the underlying |
95 /// <code>PPB_UDPSocket_Dev</code> resource outlives your class, the browser | 95 /// <code>PPB_UDPSocket_Dev</code> resource outlives your class, the browser |
96 /// will still try to write into your buffer when the operation completes. | 96 /// will still try to write into your buffer when the operation completes. |
97 /// The buffer must be kept valid until then to avoid memory corruption. | 97 /// The buffer must be kept valid until then to avoid memory corruption. |
98 /// If you want to release the buffer while the <code>RecvFrom()</code> call | 98 /// If you want to release the buffer while the <code>RecvFrom()</code> call |
99 /// is still pending, you should call <code>Close()</code> to ensure that the | 99 /// is still pending, you should call <code>Close()</code> to ensure that the |
100 /// buffer won't be accessed in the future. | 100 /// buffer won't be accessed in the future. |
101 /// | 101 /// |
102 /// @param[out] buffer The buffer to store the received data on success. It | 102 /// @param[out] buffer The buffer to store the received data on success. It |
103 /// must be at least as large as <code>num_bytes</code>. | 103 /// must be at least as large as <code>num_bytes</code>. |
104 /// @param[in] num_bytes The number of bytes to receive. | 104 /// @param[in] num_bytes The number of bytes to receive. |
105 /// @param[in] callback A <code>CompletionCallbackWithOutput</code> to be | 105 /// @param[in] callback A <code>CompletionCallbackWithOutput</code> to be |
106 /// called upon completion. | 106 /// called upon completion. |
107 /// | 107 /// |
108 /// @return A non-negative number on success to indicate how many bytes have | 108 /// @return A non-negative number on success to indicate how many bytes have |
109 /// been received; otherwise, an error code from <code>pp_errors.h</code>. | 109 /// been received; otherwise, an error code from <code>pp_errors.h</code>. |
110 int32_t RecvFrom( | 110 int32_t RecvFrom( |
111 char* buffer, | 111 char* buffer, |
112 int32_t num_bytes, | 112 int32_t num_bytes, |
113 const CompletionCallbackWithOutput<NetAddress_Dev>& callback); | 113 const CompletionCallbackWithOutput<NetAddress>& callback); |
114 | 114 |
115 /// Sends data to a specific destination. The socket must be bound. | 115 /// Sends data to a specific destination. The socket must be bound. |
116 /// | 116 /// |
117 /// @param[in] buffer The buffer containing the data to send. | 117 /// @param[in] buffer The buffer containing the data to send. |
118 /// @param[in] num_bytes The number of bytes to send. | 118 /// @param[in] num_bytes The number of bytes to send. |
119 /// @param[in] addr A <code>NetAddress_Dev</code> object holding the | 119 /// @param[in] addr A <code>NetAddress</code> object holding the destination |
120 /// destination address. | 120 /// address. |
121 /// @param[in] callback A <code>CompletionCallback</code> to be called upon | 121 /// @param[in] callback A <code>CompletionCallback</code> to be called upon |
122 /// completion. | 122 /// completion. |
123 /// | 123 /// |
124 /// @return A non-negative number on success to indicate how many bytes have | 124 /// @return A non-negative number on success to indicate how many bytes have |
125 /// been sent; otherwise, an error code from <code>pp_errors.h</code>. | 125 /// been sent; otherwise, an error code from <code>pp_errors.h</code>. |
126 /// <code>PP_ERROR_NOACCESS</code> will be returned if the caller doesn't have | 126 /// <code>PP_ERROR_NOACCESS</code> will be returned if the caller doesn't have |
127 /// required permissions. | 127 /// required permissions. |
128 int32_t SendTo(const char* buffer, | 128 int32_t SendTo(const char* buffer, |
129 int32_t num_bytes, | 129 int32_t num_bytes, |
130 const NetAddress_Dev& addr, | 130 const NetAddress& addr, |
131 const CompletionCallback& callback); | 131 const CompletionCallback& callback); |
132 | 132 |
133 /// Cancels all pending reads and writes, and closes the socket. Any pending | 133 /// Cancels all pending reads and writes, and closes the socket. Any pending |
134 /// callbacks will still run, reporting <code>PP_ERROR_ABORTED</code> if | 134 /// callbacks will still run, reporting <code>PP_ERROR_ABORTED</code> if |
135 /// pending IO was interrupted. After a call to this method, no output | 135 /// pending IO was interrupted. After a call to this method, no output |
136 /// paramters passed into previous <code>RecvFrom()</code> calls will be | 136 /// paramters passed into previous <code>RecvFrom()</code> calls will be |
137 /// accessed. It is not valid to call <code>Bind()</code> again. | 137 /// accessed. It is not valid to call <code>Bind()</code> again. |
138 /// | 138 /// |
139 /// The socket is implicitly closed if it is destroyed, so you are not | 139 /// The socket is implicitly closed if it is destroyed, so you are not |
140 /// required to call this method. | 140 /// required to call this method. |
(...skipping 10 matching lines...) Expand all Loading... |
151 /// | 151 /// |
152 /// @return An int32_t containing an error code from <code>pp_errors.h</code>. | 152 /// @return An int32_t containing an error code from <code>pp_errors.h</code>. |
153 int32_t SetOption(PP_UDPSocket_Option_Dev name, | 153 int32_t SetOption(PP_UDPSocket_Option_Dev name, |
154 const Var& value, | 154 const Var& value, |
155 const CompletionCallback& callback); | 155 const CompletionCallback& callback); |
156 }; | 156 }; |
157 | 157 |
158 } // namespace pp | 158 } // namespace pp |
159 | 159 |
160 #endif // PPAPI_CPP_DEV_UDP_SOCKET_DEV_H_ | 160 #endif // PPAPI_CPP_DEV_UDP_SOCKET_DEV_H_ |
OLD | NEW |