1 // Copyright (c) 2018 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "quiche/quic/core/frames/quic_message_frame.h"
6
7 #include "quiche/quic/core/quic_constants.h"
8 #include "quiche/quic/platform/api/quic_logging.h"
9 #include "quiche/common/platform/api/quiche_mem_slice.h"
10
11 namespace quic {
12
QuicMessageFrame(QuicMessageId message_id)13 QuicMessageFrame::QuicMessageFrame(QuicMessageId message_id)
14 : message_id(message_id), data(nullptr), message_length(0) {}
15
QuicMessageFrame(QuicMessageId message_id,absl::Span<quiche::QuicheMemSlice> span)16 QuicMessageFrame::QuicMessageFrame(QuicMessageId message_id,
17 absl::Span<quiche::QuicheMemSlice> span)
18 : message_id(message_id), data(nullptr), message_length(0) {
19 for (quiche::QuicheMemSlice& slice : span) {
20 if (slice.empty()) {
21 continue;
22 }
23 message_length += slice.length();
24 message_data.push_back(std::move(slice));
25 }
26 }
QuicMessageFrame(QuicMessageId message_id,quiche::QuicheMemSlice slice)27 QuicMessageFrame::QuicMessageFrame(QuicMessageId message_id,
28 quiche::QuicheMemSlice slice)
29 : QuicMessageFrame(message_id, absl::MakeSpan(&slice, 1)) {}
30
QuicMessageFrame(const char * data,QuicPacketLength length)31 QuicMessageFrame::QuicMessageFrame(const char* data, QuicPacketLength length)
32 : message_id(0), data(data), message_length(length) {}
33
~QuicMessageFrame()34 QuicMessageFrame::~QuicMessageFrame() {}
35
operator <<(std::ostream & os,const QuicMessageFrame & s)36 std::ostream& operator<<(std::ostream& os, const QuicMessageFrame& s) {
37 os << " message_id: " << s.message_id
38 << ", message_length: " << s.message_length << " }\n";
39 return os;
40 }
41
42 } // namespace quic
43