15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef JINGLE_GLUE_RESOLVING_CLIENT_SOCKET_FACTORY_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define JINGLE_GLUE_RESOLVING_CLIENT_SOCKET_FACTORY_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ClientSocketHandle;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HostPortPair;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SSLClientSocket;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class StreamSocket;
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace net
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(sanjeevr): Move this to net/
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace jingle_glue {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Interface for a ClientSocketFactory that creates ClientSockets that can
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// resolve host names and tunnel through proxies.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ResolvingClientSocketFactory {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~ResolvingClientSocketFactory() { }
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Method to create a transport socket using a HostPortPair.
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual scoped_ptr<net::StreamSocket> CreateTransportClientSocket(
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const net::HostPortPair& host_and_port) = 0;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual scoped_ptr<net::SSLClientSocket> CreateSSLClientSocket(
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      scoped_ptr<net::ClientSocketHandle> transport_socket,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const net::HostPortPair& host_and_port) = 0;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace jingle_glue
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // JINGLE_GLUE_RESOLVING_CLIENT_SOCKET_FACTORY_H_
38