1 /* 2 * Copyright 2012 The WebRTC Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef WEBRTC_P2P_BASE_TRANSPORTDESCRIPTIONFACTORY_H_ VV12#define WEBRTC_P2P_BASE_TRANSPORTDESCRIPTIONFACTORY_H_ 13 14 #include "webrtc/p2p/base/transportdescription.h" 15 16 namespace rtc { 17 class SSLIdentity; 18 } 19 20 namespace cricket { 21 22 struct TransportOptions { U()23 TransportOptions() : ice_restart(false), prefer_passive_role(false) {} 24 bool ice_restart; 25 bool prefer_passive_role; 26 }; 27 ~U()28// Creates transport descriptions according to the supplied configuration. 29 // When creating answers, performs the appropriate negotiation 30 // of the various fields to determine the proper result. 31 class TransportDescriptionFactory { 32 public: 33 // Default ctor; use methods below to set configuration. 34 TransportDescriptionFactory(); 35 SecurePolicy secure() const { return secure_; } 36 // The identity to use when setting up DTLS. 37 rtc::SSLIdentity* identity() const { return identity_; } 38 39 // Specifies the transport protocol to be use. 40 void set_protocol(TransportProtocol protocol) { protocol_ = protocol; } 41 // Specifies the transport security policy to use. 42 void set_secure(SecurePolicy s) { secure_ = s; } 43 // Specifies the identity to use (only used when secure is not SEC_DISABLED). 44 void set_identity(rtc::SSLIdentity* identity) { identity_ = identity; } 45 46 // Creates a transport description suitable for use in an offer. 47 TransportDescription* CreateOffer(const TransportOptions& options, 48 const TransportDescription* current_description) const; 49 // Create a transport description that is a response to an offer. 50 TransportDescription* CreateAnswer( 51 const TransportDescription* offer, 52 const TransportOptions& options, 53 const TransportDescription* current_description) const; 54 55 private: 56 bool SetSecurityInfo(TransportDescription* description, 57 ConnectionRole role) const; 58 59 TransportProtocol protocol_; 60 SecurePolicy secure_; 61 rtc::SSLIdentity* identity_; 62 }; 63 64 } // namespace cricket 65 66 #endif // WEBRTC_P2P_BASE_TRANSPORTDESCRIPTIONFACTORY_H_ 67