|  | /* | 
|  | *  Copyright 2007 The WebRTC Project Authors. All rights reserved. | 
|  | * | 
|  | *  Use of this source code is governed by a BSD-style license | 
|  | *  that can be found in the LICENSE file in the root of the source | 
|  | *  tree. An additional intellectual property rights grant can be found | 
|  | *  in the file PATENTS.  All contributing project authors may | 
|  | *  be found in the AUTHORS file in the root of the source tree. | 
|  | */ | 
|  |  | 
|  | #ifndef WEBRTC_BASE_SSLSOCKETFACTORY_H__ | 
|  | #define WEBRTC_BASE_SSLSOCKETFACTORY_H__ | 
|  |  | 
|  | #include "webrtc/base/proxyinfo.h" | 
|  | #include "webrtc/base/socketserver.h" | 
|  |  | 
|  | namespace rtc { | 
|  |  | 
|  | /////////////////////////////////////////////////////////////////////////////// | 
|  | // SslSocketFactory | 
|  | /////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | class SslSocketFactory : public SocketFactory { | 
|  | public: | 
|  | SslSocketFactory(SocketFactory* factory, const std::string& user_agent); | 
|  | ~SslSocketFactory() override; | 
|  |  | 
|  | void SetAutoDetectProxy() { | 
|  | autodetect_proxy_ = true; | 
|  | } | 
|  | void SetForceConnect(bool force) { | 
|  | force_connect_ = force; | 
|  | } | 
|  | void SetProxy(const ProxyInfo& proxy) { | 
|  | autodetect_proxy_ = false; | 
|  | proxy_ = proxy; | 
|  | } | 
|  | bool autodetect_proxy() const { return autodetect_proxy_; } | 
|  | const ProxyInfo& proxy() const { return proxy_; } | 
|  |  | 
|  | void UseSSL(const char* hostname) { hostname_ = hostname; } | 
|  | void DisableSSL() { hostname_.clear(); } | 
|  | void SetIgnoreBadCert(bool ignore) { ignore_bad_cert_ = ignore; } | 
|  | bool ignore_bad_cert() const { return ignore_bad_cert_; } | 
|  |  | 
|  | void SetLogging(LoggingSeverity level, const std::string& label, | 
|  | bool binary_mode = false) { | 
|  | logging_level_ = level; | 
|  | logging_label_ = label; | 
|  | binary_mode_ = binary_mode; | 
|  | } | 
|  |  | 
|  | // SocketFactory Interface | 
|  | Socket* CreateSocket(int type) override; | 
|  | Socket* CreateSocket(int family, int type) override; | 
|  |  | 
|  | AsyncSocket* CreateAsyncSocket(int type) override; | 
|  | AsyncSocket* CreateAsyncSocket(int family, int type) override; | 
|  |  | 
|  | private: | 
|  | friend class ProxySocketAdapter; | 
|  | AsyncSocket* CreateProxySocket(const ProxyInfo& proxy, int family, int type); | 
|  |  | 
|  | SocketFactory* factory_; | 
|  | std::string agent_; | 
|  | bool autodetect_proxy_, force_connect_; | 
|  | ProxyInfo proxy_; | 
|  | std::string hostname_, logging_label_; | 
|  | LoggingSeverity logging_level_; | 
|  | bool binary_mode_; | 
|  | bool ignore_bad_cert_; | 
|  | }; | 
|  |  | 
|  | /////////////////////////////////////////////////////////////////////////////// | 
|  |  | 
|  | }  // namespace rtc | 
|  |  | 
|  | #endif  // WEBRTC_BASE_SSLSOCKETFACTORY_H__ |