| // Copyright (c) 2019 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef QUICHE_QUIC_QBONE_QBONE_STREAM_H_ | |
| #define QUICHE_QUIC_QBONE_QBONE_STREAM_H_ | |
| #include "net/third_party/quiche/src/quic/core/quic_session.h" | |
| #include "net/third_party/quiche/src/quic/core/quic_stream.h" | |
| #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" | |
| namespace quic { | |
| class QboneSessionBase; | |
| // QboneWriteOnlyStream is responsible for sending data for a single | |
| // packet to the other side. | |
| // Note that the stream will be created HalfClosed (reads will be closed). | |
| class QUIC_EXPORT_PRIVATE QboneWriteOnlyStream : public QuicStream { | |
| public: | |
| QboneWriteOnlyStream(QuicStreamId id, QuicSession* session); | |
| // QuicStream implementation. Qbone writers are ephemeral and don't | |
| // read any data. | |
| void OnDataAvailable() override {} | |
| // Write a network packet over the quic stream. | |
| void WritePacketToQuicStream(QuicStringPiece packet); | |
| }; | |
| // QboneReadOnlyStream will be used if we find an incoming stream that | |
| // isn't fully contained. It will buffer the data when available and | |
| // attempt to parse it as a packet to send to the network when a FIN | |
| // is found. | |
| // Note that the stream will be created HalfClosed (writes will be closed). | |
| class QUIC_EXPORT_PRIVATE QboneReadOnlyStream : public QuicStream { | |
| public: | |
| QboneReadOnlyStream(QuicStreamId id, QboneSessionBase* session); | |
| ~QboneReadOnlyStream() override; | |
| // QuicStream overrides. | |
| // OnDataAvailable is called when there is data in the quic stream buffer. | |
| // This will copy the buffer locally and attempt to parse it to write out | |
| // packets to the network. | |
| void OnDataAvailable() override; | |
| private: | |
| string buffer_; | |
| QboneSessionBase* session_; | |
| }; | |
| } // namespace quic | |
| #endif // QUICHE_QUIC_QBONE_QBONE_STREAM_H_ |