Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Unified Diff: ppapi/cpp/udp_socket.cc

Issue 704133005: Pepper: Add support for multicast in PPB_UDPSocket API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix typo: SetMulticastInterface -> SetMulticastTimeToLive Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/cpp/udp_socket.h ('k') | ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/cpp/udp_socket.cc
diff --git a/ppapi/cpp/udp_socket.cc b/ppapi/cpp/udp_socket.cc
index 2f8c505df5899db8a43d4d055cc1c8f791a6fa7d..19d2894775cec42fbbc1cb54e53d5358ddfd00e0 100644
--- a/ppapi/cpp/udp_socket.cc
+++ b/ppapi/cpp/udp_socket.cc
@@ -22,13 +22,20 @@ template <> const char* interface_name<PPB_UDPSocket_1_1>() {
return PPB_UDPSOCKET_INTERFACE_1_1;
}
+template <> const char* interface_name<PPB_UDPSocket_1_2>() {
+ return PPB_UDPSOCKET_INTERFACE_1_2;
+}
+
} // namespace
UDPSocket::UDPSocket() {
}
UDPSocket::UDPSocket(const InstanceHandle& instance) {
- if (has_interface<PPB_UDPSocket_1_1>()) {
+ if (has_interface<PPB_UDPSocket_1_2>()) {
+ PassRefFromConstructor(get_interface<PPB_UDPSocket_1_2>()->Create(
+ instance.pp_instance()));
+ } else if (has_interface<PPB_UDPSocket_1_1>()) {
PassRefFromConstructor(get_interface<PPB_UDPSocket_1_1>()->Create(
instance.pp_instance()));
} else if (has_interface<PPB_UDPSocket_1_0>()) {
@@ -54,12 +61,17 @@ UDPSocket& UDPSocket::operator=(const UDPSocket& other) {
// static
bool UDPSocket::IsAvailable() {
- return has_interface<PPB_UDPSocket_1_1>() ||
+ return has_interface<PPB_UDPSocket_1_2>() ||
+ has_interface<PPB_UDPSocket_1_1>() ||
has_interface<PPB_UDPSocket_1_0>();
}
int32_t UDPSocket::Bind(const NetAddress& addr,
const CompletionCallback& callback) {
+ if (has_interface<PPB_UDPSocket_1_2>()) {
+ return get_interface<PPB_UDPSocket_1_2>()->Bind(
+ pp_resource(), addr.pp_resource(), callback.pp_completion_callback());
+ }
if (has_interface<PPB_UDPSocket_1_1>()) {
return get_interface<PPB_UDPSocket_1_1>()->Bind(
pp_resource(), addr.pp_resource(), callback.pp_completion_callback());
@@ -72,6 +84,11 @@ int32_t UDPSocket::Bind(const NetAddress& addr,
}
NetAddress UDPSocket::GetBoundAddress() {
+ if (has_interface<PPB_UDPSocket_1_2>()) {
+ return NetAddress(
+ PASS_REF,
+ get_interface<PPB_UDPSocket_1_2>()->GetBoundAddress(pp_resource()));
+ }
if (has_interface<PPB_UDPSocket_1_1>()) {
return NetAddress(
PASS_REF,
@@ -89,6 +106,11 @@ int32_t UDPSocket::RecvFrom(
char* buffer,
int32_t num_bytes,
const CompletionCallbackWithOutput<NetAddress>& callback) {
+ if (has_interface<PPB_UDPSocket_1_2>()) {
+ return get_interface<PPB_UDPSocket_1_2>()->RecvFrom(
+ pp_resource(), buffer, num_bytes, callback.output(),
+ callback.pp_completion_callback());
+ }
if (has_interface<PPB_UDPSocket_1_1>()) {
return get_interface<PPB_UDPSocket_1_1>()->RecvFrom(
pp_resource(), buffer, num_bytes, callback.output(),
@@ -106,6 +128,11 @@ int32_t UDPSocket::SendTo(const char* buffer,
int32_t num_bytes,
const NetAddress& addr,
const CompletionCallback& callback) {
+ if (has_interface<PPB_UDPSocket_1_2>()) {
+ return get_interface<PPB_UDPSocket_1_2>()->SendTo(
+ pp_resource(), buffer, num_bytes, addr.pp_resource(),
+ callback.pp_completion_callback());
+ }
if (has_interface<PPB_UDPSocket_1_1>()) {
return get_interface<PPB_UDPSocket_1_1>()->SendTo(
pp_resource(), buffer, num_bytes, addr.pp_resource(),
@@ -120,6 +147,8 @@ int32_t UDPSocket::SendTo(const char* buffer,
}
void UDPSocket::Close() {
+ if (has_interface<PPB_UDPSocket_1_2>())
+ return get_interface<PPB_UDPSocket_1_2>()->Close(pp_resource());
if (has_interface<PPB_UDPSocket_1_1>())
return get_interface<PPB_UDPSocket_1_1>()->Close(pp_resource());
if (has_interface<PPB_UDPSocket_1_0>())
@@ -129,6 +158,10 @@ void UDPSocket::Close() {
int32_t UDPSocket::SetOption(PP_UDPSocket_Option name,
const Var& value,
const CompletionCallback& callback) {
+ if (has_interface<PPB_UDPSocket_1_2>()) {
+ return get_interface<PPB_UDPSocket_1_2>()->SetOption(
+ pp_resource(), name, value.pp_var(), callback.pp_completion_callback());
+ }
if (has_interface<PPB_UDPSocket_1_1>()) {
return get_interface<PPB_UDPSocket_1_1>()->SetOption(
pp_resource(), name, value.pp_var(), callback.pp_completion_callback());
@@ -140,4 +173,22 @@ int32_t UDPSocket::SetOption(PP_UDPSocket_Option name,
return callback.MayForce(PP_ERROR_NOINTERFACE);
}
+int32_t UDPSocket::JoinGroup(const NetAddress& group,
+ const CompletionCallback callback) {
+ if (has_interface<PPB_UDPSocket_1_2>()) {
+ return get_interface<PPB_UDPSocket_1_2>()->JoinGroup(
+ pp_resource(), group.pp_resource(), callback.pp_completion_callback());
+ }
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
+}
+
+int32_t UDPSocket::LeaveGroup(const NetAddress& group,
+ const CompletionCallback callback) {
+ if (has_interface<PPB_UDPSocket_1_2>()) {
+ return get_interface<PPB_UDPSocket_1_2>()->LeaveGroup(
+ pp_resource(), group.pp_resource(), callback.pp_completion_callback());
+ }
+ return callback.MayForce(PP_ERROR_NOINTERFACE);
+}
+
} // namespace pp
« no previous file with comments | « ppapi/cpp/udp_socket.h ('k') | ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_shim.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698