xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/core/frames/quic_message_frame.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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