Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / p2p / base / transportdescriptionfactory.h
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_
12 #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 {
23   TransportOptions() : ice_restart(false), prefer_passive_role(false) {}
24   bool ice_restart;
25   bool prefer_passive_role;
26 };
27
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_