• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef CONTENT_RENDERER_P2P_IPC_SOCKET_FACTORY_H_
6 #define CONTENT_RENDERER_P2P_IPC_SOCKET_FACTORY_H_
7 
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "content/common/content_export.h"
11 #include "third_party/libjingle/source/talk/p2p/base/packetsocketfactory.h"
12 
13 namespace content {
14 
15 class P2PSocketDispatcher;
16 
17 // IpcPacketSocketFactory implements talk_base::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 // talk_base::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 talk_base::PacketSocketFactory {
24  public:
25   CONTENT_EXPORT explicit IpcPacketSocketFactory(
26       P2PSocketDispatcher* socket_dispatcher);
27   virtual ~IpcPacketSocketFactory();
28 
29   virtual talk_base::AsyncPacketSocket* CreateUdpSocket(
30       const talk_base::SocketAddress& local_address,
31       int min_port, int max_port) OVERRIDE;
32   virtual talk_base::AsyncPacketSocket* CreateServerTcpSocket(
33       const talk_base::SocketAddress& local_address,
34       int min_port,
35       int max_port,
36       int opts) OVERRIDE;
37   virtual talk_base::AsyncPacketSocket* CreateClientTcpSocket(
38       const talk_base::SocketAddress& local_address,
39       const talk_base::SocketAddress& remote_address,
40       const talk_base::ProxyInfo& proxy_info,
41       const std::string& user_agent,
42       int opts) OVERRIDE;
43   virtual talk_base::AsyncResolverInterface* CreateAsyncResolver() OVERRIDE;
44 
45  private:
46   P2PSocketDispatcher* socket_dispatcher_;
47 
48   DISALLOW_COPY_AND_ASSIGN(IpcPacketSocketFactory);
49 };
50 
51 }  // namespace content
52 
53 #endif  // CONTENT_RENDERER_P2P_IPC_SOCKET_FACTORY_H_
54