Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(288)

Side by Side Diff: webrtc/p2p/quic/quicsession.cc

Issue 1648763002: Create QuicSession (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Sync webrtc/build/common.gypi to fix patch issue Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/p2p/quic/quicsession.h ('k') | webrtc/p2p/quic/quicsession_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2016 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 #include "webrtc/p2p/quic/quicsession.h"
12
13 #include <string>
14 #include <utility>
15
16 #include "webrtc/base/checks.h"
17 #include "webrtc/base/logging.h"
18 #include "webrtc/base/messagehandler.h"
19 #include "webrtc/base/messagequeue.h"
20
21 namespace cricket {
22
23 QuicSession::QuicSession(scoped_ptr<net::QuicConnection> connection,
24 const net::QuicConfig& config)
25 : net::QuicSession(connection.release(), config) {}
26
27 QuicSession::~QuicSession() {}
28
29 void QuicSession::StartClientHandshake(
30 net::QuicCryptoClientStream* crypto_stream) {
31 SetCryptoStream(crypto_stream);
32 net::QuicSession::Initialize();
33 crypto_stream->CryptoConnect();
34 }
35
36 void QuicSession::StartServerHandshake(
37 net::QuicCryptoServerStream* crypto_stream) {
38 SetCryptoStream(crypto_stream);
39 net::QuicSession::Initialize();
40 }
41
42 void QuicSession::SetCryptoStream(net::QuicCryptoStream* crypto_stream) {
43 crypto_stream_.reset(crypto_stream);
44 }
45
46 bool QuicSession::ExportKeyingMaterial(base::StringPiece label,
47 base::StringPiece context,
48 size_t result_len,
49 string* result) {
50 return crypto_stream_->ExportKeyingMaterial(label, context, result_len,
51 result);
52 }
53
54 void QuicSession::OnCryptoHandshakeEvent(CryptoHandshakeEvent event) {
55 net::QuicSession::OnCryptoHandshakeEvent(event);
56 if (event == HANDSHAKE_CONFIRMED) {
57 LOG(INFO) << "QuicSession handshake complete";
58 RTC_DCHECK(IsEncryptionEstablished());
59 RTC_DCHECK(IsCryptoHandshakeConfirmed());
60
61 SignalHandshakeComplete();
62 }
63 }
64
65 ReliableQuicStream* QuicSession::CreateIncomingDynamicStream(
66 net::QuicStreamId id) {
67 ReliableQuicStream* stream = CreateDataStream(id);
68 if (stream) {
69 SignalIncomingStream(stream);
70 }
71 return stream;
72 }
73
74 ReliableQuicStream* QuicSession::CreateOutgoingDynamicStream(
75 net::SpdyPriority priority) {
76 ReliableQuicStream* stream = CreateDataStream(GetNextOutgoingStreamId());
77 if (stream) {
78 ActivateStream(stream);
79 }
80 return stream;
81 }
82
83 ReliableQuicStream* QuicSession::CreateDataStream(net::QuicStreamId id) {
84 if (crypto_stream_ == nullptr || !crypto_stream_->encryption_established()) {
85 // Encryption not active so no stream created
86 return nullptr;
87 }
88 return new ReliableQuicStream(id, this);
89 }
90
91 void QuicSession::OnConnectionClosed(net::QuicErrorCode error, bool from_peer) {
92 net::QuicSession::OnConnectionClosed(error, from_peer);
93 SignalConnectionClosed(error, from_peer);
94 }
95
96 bool QuicSession::OnReadPacket(const char* data, size_t data_len) {
97 net::QuicEncryptedPacket packet(data, data_len);
98 connection()->ProcessUdpPacket(connection()->self_address(),
99 connection()->peer_address(), packet);
100 return true;
101 }
102
103 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/p2p/quic/quicsession.h ('k') | webrtc/p2p/quic/quicsession_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698