2 * Copyright 2012 The WebRTC Project Authors. All rights reserved.
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.
11 #ifndef WEBRTC_P2P_BASE_TRANSPORTDESCRIPTIONFACTORY_H_
12 #define WEBRTC_P2P_BASE_TRANSPORTDESCRIPTIONFACTORY_H_
14 #include "webrtc/p2p/base/transportdescription.h"
22 struct TransportOptions {
23 TransportOptions() : ice_restart(false), prefer_passive_role(false) {}
25 bool prefer_passive_role;
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 {
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_; }
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; }
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;
56 bool SetSecurityInfo(TransportDescription* description,
57 ConnectionRole role) const;
59 TransportProtocol protocol_;
61 rtc::SSLIdentity* identity_;
64 } // namespace cricket
66 #endif // WEBRTC_P2P_BASE_TRANSPORTDESCRIPTIONFACTORY_H_