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