Index: chrome/renderer/media/cast_session.h |
diff --git a/chrome/renderer/media/cast_session.h b/chrome/renderer/media/cast_session.h |
index 6bec7f9a3f16d949d9446c225e75ad18134044c6..4f6298e16f51442199b72d77aa1a8658fc201d30 100644 |
--- a/chrome/renderer/media/cast_session.h |
+++ b/chrome/renderer/media/cast_session.h |
@@ -8,11 +8,15 @@ |
#include "base/basictypes.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
+#include "net/base/ip_endpoint.h" |
namespace base { |
class MessageLoopProxy; |
} // namespace base |
+namespace content{ |
+class P2PSocketClient; |
+}; |
namespace media { |
namespace cast { |
struct AudioSenderConfig; |
@@ -29,6 +33,24 @@ class CastSession : public base::RefCounted<CastSession> { |
public: |
CastSession(); |
+ class SocketFactory { |
+ public: |
+ virtual ~SocketFactory(); |
+ |
+ // Called on IO thread. |
+ virtual scoped_refptr<content::P2PSocketClient> create() = 0; |
+ }; |
+ |
+ // Send the socket factory to the delegate, where create will be |
+ // called. The delegate will then delete the socket factory on the |
+ // IO thread. We do it this way because the P2P socket needs to |
+ // be created on the same thread that the callbacks will be called on. |
+ // The |remote_endpoint| is the address will be used when calling |
+ // SendWithDscp on the P2PSocketClient. |
+ // Takes ownership of socket_factory. |
+ void SetSocketFactory(scoped_ptr<SocketFactory> socket_factory, |
+ const net::IPEndPoint& remote_address); |
+ |
// Start encoding of audio and video using the provided configuration. |
void StartAudio(const media::cast::AudioSenderConfig& config); |
void StartVideo(const media::cast::VideoSenderConfig& config); |