diff options
author | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-23 11:51:18 +0000 |
---|---|---|
committer | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-23 11:51:18 +0000 |
commit | a8d7f509a82030205617297b83bf4b66f192c815 (patch) | |
tree | ae2f365c71d0c7f16aa4df548480bde9ec90b6ff /ppapi/cpp | |
parent | 5f39adc248a281ceb57db98d272ee4b9c382b32f (diff) | |
download | chromium_src-a8d7f509a82030205617297b83bf4b66f192c815.zip chromium_src-a8d7f509a82030205617297b83bf4b66f192c815.tar.gz chromium_src-a8d7f509a82030205617297b83bf4b66f192c815.tar.bz2 |
Add multicast support for PPB_Ext_Socket_Dev.
BUG=226303
TEST=None
Review URL: https://chromiumcodereview.appspot.com/15545003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@201759 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/cpp')
-rw-r--r-- | ppapi/cpp/extensions/dev/socket_dev.cc | 148 | ||||
-rw-r--r-- | ppapi/cpp/extensions/dev/socket_dev.h | 29 |
2 files changed, 145 insertions, 32 deletions
diff --git a/ppapi/cpp/extensions/dev/socket_dev.cc b/ppapi/cpp/extensions/dev/socket_dev.cc index fb493ba..558f01e 100644 --- a/ppapi/cpp/extensions/dev/socket_dev.cc +++ b/ppapi/cpp/extensions/dev/socket_dev.cc @@ -14,8 +14,8 @@ namespace pp { namespace { -template <> const char* interface_name<PPB_Ext_Socket_Dev_0_1>() { - return PPB_EXT_SOCKET_DEV_INTERFACE_0_1; +template <> const char* interface_name<PPB_Ext_Socket_Dev_0_2>() { + return PPB_EXT_SOCKET_DEV_INTERFACE_0_2; } } // namespace @@ -317,13 +317,13 @@ Socket_Dev::~Socket_Dev() { int32_t Socket_Dev::Create(const SocketType_Dev& type, const Optional<CreateOptions_Dev>& options, const CreateCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<SocketType_Dev> type_var(type); internal::ToVarConverter<Optional<CreateOptions_Dev> > options_var(options); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->Create( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->Create( instance_.pp_instance(), type_var.pp_var(), options_var.pp_var(), @@ -332,12 +332,12 @@ int32_t Socket_Dev::Create(const SocketType_Dev& type, } void Socket_Dev::Destroy(int32_t socket_id) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return; internal::ToVarConverter<int32_t> socket_id_var(socket_id); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->Destroy( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->Destroy( instance_.pp_instance(), socket_id_var.pp_var()); } @@ -346,14 +346,14 @@ int32_t Socket_Dev::Connect(int32_t socket_id, const std::string& hostname, int32_t port, const ConnectCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); internal::ToVarConverter<std::string> hostname_var(hostname); internal::ToVarConverter<int32_t> port_var(port); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->Connect( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->Connect( instance_.pp_instance(), socket_id_var.pp_var(), hostname_var.pp_var(), @@ -366,14 +366,14 @@ int32_t Socket_Dev::Bind(int32_t socket_id, const std::string& address, int32_t port, const BindCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); internal::ToVarConverter<std::string> address_var(address); internal::ToVarConverter<int32_t> port_var(port); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->Bind( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->Bind( instance_.pp_instance(), socket_id_var.pp_var(), address_var.pp_var(), @@ -383,12 +383,12 @@ int32_t Socket_Dev::Bind(int32_t socket_id, } void Socket_Dev::Disconnect(int32_t socket_id) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return; internal::ToVarConverter<int32_t> socket_id_var(socket_id); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->Disconnect( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->Disconnect( instance_.pp_instance(), socket_id_var.pp_var()); } @@ -396,13 +396,13 @@ void Socket_Dev::Disconnect(int32_t socket_id) { int32_t Socket_Dev::Read(int32_t socket_id, const Optional<int32_t>& buffer_size, const ReadCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); internal::ToVarConverter<Optional<int32_t> > buffer_size_var(buffer_size); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->Read( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->Read( instance_.pp_instance(), socket_id_var.pp_var(), buffer_size_var.pp_var(), @@ -413,13 +413,13 @@ int32_t Socket_Dev::Read(int32_t socket_id, int32_t Socket_Dev::Write(int32_t socket_id, const VarArrayBuffer& data, const WriteCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); internal::ToVarConverter<Var> data_var(data); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->Write( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->Write( instance_.pp_instance(), socket_id_var.pp_var(), data_var.pp_var(), @@ -430,13 +430,13 @@ int32_t Socket_Dev::Write(int32_t socket_id, int32_t Socket_Dev::RecvFrom(int32_t socket_id, const Optional<int32_t>& buffer_size, const RecvFromCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); internal::ToVarConverter<Optional<int32_t> > buffer_size_var(buffer_size); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->RecvFrom( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->RecvFrom( instance_.pp_instance(), socket_id_var.pp_var(), buffer_size_var.pp_var(), @@ -449,7 +449,7 @@ int32_t Socket_Dev::SendTo(int32_t socket_id, const std::string& address, int32_t port, const SendToCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); @@ -457,7 +457,7 @@ int32_t Socket_Dev::SendTo(int32_t socket_id, internal::ToVarConverter<std::string> address_var(address); internal::ToVarConverter<int32_t> port_var(port); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->SendTo( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->SendTo( instance_.pp_instance(), socket_id_var.pp_var(), data_var.pp_var(), @@ -472,7 +472,7 @@ int32_t Socket_Dev::Listen(int32_t socket_id, int32_t port, const Optional<int32_t>& backlog, const ListenCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); @@ -480,7 +480,7 @@ int32_t Socket_Dev::Listen(int32_t socket_id, internal::ToVarConverter<int32_t> port_var(port); internal::ToVarConverter<Optional<int32_t> > backlog_var(backlog); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->Listen( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->Listen( instance_.pp_instance(), socket_id_var.pp_var(), address_var.pp_var(), @@ -492,12 +492,12 @@ int32_t Socket_Dev::Listen(int32_t socket_id, int32_t Socket_Dev::Accept(int32_t socket_id, const AcceptCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->Accept( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->Accept( instance_.pp_instance(), socket_id_var.pp_var(), callback.output(), @@ -508,14 +508,14 @@ int32_t Socket_Dev::SetKeepAlive(int32_t socket_id, bool enable, const Optional<int32_t>& delay, const SetKeepAliveCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); internal::ToVarConverter<bool> enable_var(enable); internal::ToVarConverter<Optional<int32_t> > delay_var(delay); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->SetKeepAlive( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->SetKeepAlive( instance_.pp_instance(), socket_id_var.pp_var(), enable_var.pp_var(), @@ -527,13 +527,13 @@ int32_t Socket_Dev::SetKeepAlive(int32_t socket_id, int32_t Socket_Dev::SetNoDelay(int32_t socket_id, bool no_delay, const SetNoDelayCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); internal::ToVarConverter<bool> no_delay_var(no_delay); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->SetNoDelay( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->SetNoDelay( instance_.pp_instance(), socket_id_var.pp_var(), no_delay_var.pp_var(), @@ -543,12 +543,12 @@ int32_t Socket_Dev::SetNoDelay(int32_t socket_id, int32_t Socket_Dev::GetInfo(int32_t socket_id, const GetInfoCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); internal::ToVarConverter<int32_t> socket_id_var(socket_id); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->GetInfo( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->GetInfo( instance_.pp_instance(), socket_id_var.pp_var(), callback.output(), @@ -556,15 +556,99 @@ int32_t Socket_Dev::GetInfo(int32_t socket_id, } int32_t Socket_Dev::GetNetworkList(const GetNetworkListCallback& callback) { - if (!has_interface<PPB_Ext_Socket_Dev_0_1>()) + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) return callback.MayForce(PP_ERROR_NOINTERFACE); - return get_interface<PPB_Ext_Socket_Dev_0_1>()->GetNetworkList( + return get_interface<PPB_Ext_Socket_Dev_0_2>()->GetNetworkList( instance_.pp_instance(), callback.output(), callback.pp_completion_callback()); } +int32_t Socket_Dev::JoinGroup(int32_t socket_id, + const std::string& address, + const JoinGroupCallback& callback) { + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) + return callback.MayForce(PP_ERROR_NOINTERFACE); + + internal::ToVarConverter<int32_t> socket_id_var(socket_id); + internal::ToVarConverter<std::string> address_var(address); + + return get_interface<PPB_Ext_Socket_Dev_0_2>()->JoinGroup( + instance_.pp_instance(), + socket_id_var.pp_var(), + address_var.pp_var(), + callback.output(), + callback.pp_completion_callback()); +} + +int32_t Socket_Dev::LeaveGroup(int32_t socket_id, + const std::string& address, + const LeaveGroupCallback& callback) { + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) + return callback.MayForce(PP_ERROR_NOINTERFACE); + + internal::ToVarConverter<int32_t> socket_id_var(socket_id); + internal::ToVarConverter<std::string> address_var(address); + + return get_interface<PPB_Ext_Socket_Dev_0_2>()->LeaveGroup( + instance_.pp_instance(), + socket_id_var.pp_var(), + address_var.pp_var(), + callback.output(), + callback.pp_completion_callback()); +} + +int32_t Socket_Dev::SetMulticastTimeToLive( + int32_t socket_id, + int32_t ttl, + const SetMulticastTimeToLiveCallback& callback) { + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) + return callback.MayForce(PP_ERROR_NOINTERFACE); + + internal::ToVarConverter<int32_t> socket_id_var(socket_id); + internal::ToVarConverter<int32_t> ttl_var(ttl); + + return get_interface<PPB_Ext_Socket_Dev_0_2>()->SetMulticastTimeToLive( + instance_.pp_instance(), + socket_id_var.pp_var(), + ttl_var.pp_var(), + callback.output(), + callback.pp_completion_callback()); +} + +int32_t Socket_Dev::SetMulticastLoopbackMode( + int32_t socket_id, + bool enabled, + const SetMulticastLoopbackModeCallback& callback) { + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) + return callback.MayForce(PP_ERROR_NOINTERFACE); + + internal::ToVarConverter<int32_t> socket_id_var(socket_id); + internal::ToVarConverter<bool> enabled_var(enabled); + + return get_interface<PPB_Ext_Socket_Dev_0_2>()->SetMulticastLoopbackMode( + instance_.pp_instance(), + socket_id_var.pp_var(), + enabled_var.pp_var(), + callback.output(), + callback.pp_completion_callback()); +} + +int32_t Socket_Dev::GetJoinedGroups(int32_t socket_id, + const GetJoinedGroupsCallback& callback) { + if (!has_interface<PPB_Ext_Socket_Dev_0_2>()) + return callback.MayForce(PP_ERROR_NOINTERFACE); + + internal::ToVarConverter<int32_t> socket_id_var(socket_id); + + return get_interface<PPB_Ext_Socket_Dev_0_2>()->GetJoinedGroups( + instance_.pp_instance(), + socket_id_var.pp_var(), + callback.output(), + callback.pp_completion_callback()); +} + } // namespace socket } // namespace ext } // namespace pp diff --git a/ppapi/cpp/extensions/dev/socket_dev.h b/ppapi/cpp/extensions/dev/socket_dev.h index c51b6cc..95e78d3 100644 --- a/ppapi/cpp/extensions/dev/socket_dev.h +++ b/ppapi/cpp/extensions/dev/socket_dev.h @@ -250,6 +250,35 @@ class Socket_Dev { GetNetworkListCallback; int32_t GetNetworkList(const GetNetworkListCallback& callback); + typedef ExtCompletionCallbackWithOutput<int32_t> JoinGroupCallback; + int32_t JoinGroup(int32_t socket_id, + const std::string& address, + const JoinGroupCallback& callback); + + typedef ExtCompletionCallbackWithOutput<int32_t> LeaveGroupCallback; + int32_t LeaveGroup(int32_t socket_id, + const std::string& address, + const LeaveGroupCallback& callback); + + typedef ExtCompletionCallbackWithOutput<int32_t> + SetMulticastTimeToLiveCallback; + int32_t SetMulticastTimeToLive( + int32_t socket_id, + int32_t ttl, + const SetMulticastTimeToLiveCallback& callback); + + typedef ExtCompletionCallbackWithOutput<int32_t> + SetMulticastLoopbackModeCallback; + int32_t SetMulticastLoopbackMode( + int32_t socket_id, + bool enabled, + const SetMulticastLoopbackModeCallback& callback); + + typedef ExtCompletionCallbackWithOutput<std::vector<std::string> > + GetJoinedGroupsCallback; + int32_t GetJoinedGroups(int32_t socket_id, + const GetJoinedGroupsCallback& callback); + private: InstanceHandle instance_; }; |