1 // Copyright (c) 2012 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 #ifndef REMOTING_CLIENT_PLUGIN_PLUGIN_UTIL_H_ 6 #define REMOTING_CLIENT_PLUGIN_PLUGIN_UTIL_H_ 7 8 #include "base/basictypes.h" 9 #include "base/callback_forward.h" 10 11 #include "ppapi/cpp/completion_callback.h" 12 13 struct PP_NetAddress_Private; 14 15 namespace talk_base { 16 class SocketAddress; 17 } // namespace talk_base 18 19 namespace remoting { 20 21 // Adapts a base::Callback to a pp::CompletionCallback, which may be passed to 22 // exactly one Pepper API. If the adapted callback is not used then a copy of 23 // |callback| will be leaked, including references & passed values bound to it. 24 // Pepper guarantees that each completion callback is called once and only once 25 // (aborted callbacks are called with PP_ABOIRTED), so there should be no leaks 26 // as long as the result of this function is passed to Pepper. 27 pp::CompletionCallback PpCompletionCallback(base::Callback<void(int)> callback); 28 29 // Helpers to convert between different socket address representations. 30 bool SocketAddressToPpAddressWithPort(const talk_base::SocketAddress& address, 31 PP_NetAddress_Private* pp_address, 32 uint16_t port); 33 bool SocketAddressToPpAddress(const talk_base::SocketAddress& address, 34 PP_NetAddress_Private* pp_address); 35 bool PpAddressToSocketAddress(const PP_NetAddress_Private& pp_address, 36 talk_base::SocketAddress* address); 37 38 } // namespace remoting 39 40 #endif // REMOTING_CLIENT_PLUGIN_PLUGIN_UTIL_H_ 41