Re-subimission of https://codereview.chromium.org/1041213003/
[chromium-blink-merge.git] / content / renderer / p2p / ipc_socket_factory.h
blob157032216c94c1534de0dc9aead0ed87880ff12d
1 // Copyright (c) 2011 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.
5 #ifndef CONTENT_RENDERER_P2P_IPC_SOCKET_FACTORY_H_
6 #define CONTENT_RENDERER_P2P_IPC_SOCKET_FACTORY_H_
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "content/common/content_export.h"
11 #include "third_party/webrtc/p2p/base/packetsocketfactory.h"
13 namespace content {
15 class P2PSocketDispatcher;
17 // IpcPacketSocketFactory implements rtc::PacketSocketFactory
18 // interface for libjingle using IPC-based P2P sockets. The class must
19 // be used on a thread that is a libjingle thread (implements
20 // rtc::Thread) and also has associated base::MessageLoop. Each
21 // socket created by the factory must be used on the thread it was
22 // created on.
23 class IpcPacketSocketFactory : public rtc::PacketSocketFactory {
24 public:
25 CONTENT_EXPORT explicit IpcPacketSocketFactory(
26 P2PSocketDispatcher* socket_dispatcher);
27 ~IpcPacketSocketFactory() override;
29 rtc::AsyncPacketSocket* CreateUdpSocket(
30 const rtc::SocketAddress& local_address,
31 uint16 min_port,
32 uint16 max_port) override;
33 rtc::AsyncPacketSocket* CreateServerTcpSocket(
34 const rtc::SocketAddress& local_address,
35 uint16 min_port,
36 uint16 max_port,
37 int opts) override;
38 rtc::AsyncPacketSocket* CreateClientTcpSocket(
39 const rtc::SocketAddress& local_address,
40 const rtc::SocketAddress& remote_address,
41 const rtc::ProxyInfo& proxy_info,
42 const std::string& user_agent,
43 int opts) override;
44 rtc::AsyncResolverInterface* CreateAsyncResolver() override;
46 private:
47 P2PSocketDispatcher* socket_dispatcher_;
49 DISALLOW_COPY_AND_ASSIGN(IpcPacketSocketFactory);
52 } // namespace content
54 #endif // CONTENT_RENDERER_P2P_IPC_SOCKET_FACTORY_H_