blob: fc78ff9df7f9ca01575451e09a22ab530c79d220 [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// Copyright (c) 2016 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#ifndef QUICHE_QUIC_CORE_FRAMES_QUIC_STREAM_FRAME_H_
6#define QUICHE_QUIC_CORE_FRAMES_QUIC_STREAM_FRAME_H_
7
8#include <memory>
9#include <ostream>
10
11#include "net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h"
12#include "net/third_party/quiche/src/quic/core/quic_buffer_allocator.h"
13#include "net/third_party/quiche/src/quic/core/quic_types.h"
14#include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
QUICHE teamd9b8aba2019-12-11 10:13:38 -080015#include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
QUICHE teama6ef0a62019-03-07 20:34:33 -050016
17namespace quic {
18
19struct QUIC_EXPORT_PRIVATE QuicStreamFrame
20 : public QuicInlinedFrame<QuicStreamFrame> {
21 QuicStreamFrame();
22 QuicStreamFrame(QuicStreamId stream_id,
23 bool fin,
24 QuicStreamOffset offset,
QUICHE teamd9b8aba2019-12-11 10:13:38 -080025 quiche::QuicheStringPiece data);
QUICHE teama6ef0a62019-03-07 20:34:33 -050026 QuicStreamFrame(QuicStreamId stream_id,
27 bool fin,
28 QuicStreamOffset offset,
29 QuicPacketLength data_length);
30
31 friend QUIC_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
32 const QuicStreamFrame& s);
33
renjietang2a6ba792019-10-22 10:44:58 -070034 bool operator==(const QuicStreamFrame& rhs) const;
35
fayang93c83942019-11-07 10:41:16 -080036 bool operator!=(const QuicStreamFrame& rhs) const;
37
QUICHE teama6ef0a62019-03-07 20:34:33 -050038 bool fin;
39 QuicPacketLength data_length;
40 QuicStreamId stream_id;
41 const char* data_buffer; // Not owned.
42 QuicStreamOffset offset; // Location of this data in the stream.
43
44 QuicStreamFrame(QuicStreamId stream_id,
45 bool fin,
46 QuicStreamOffset offset,
47 const char* data_buffer,
48 QuicPacketLength data_length);
49};
50static_assert(sizeof(QuicStreamFrame) <= 64,
51 "Keep the QuicStreamFrame size to a cacheline.");
52
53} // namespace quic
54
55#endif // QUICHE_QUIC_CORE_FRAMES_QUIC_STREAM_FRAME_H_