summaryrefslogtreecommitdiff
path: root/chromium/net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_stream.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_stream.h')
-rw-r--r--chromium/net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_stream.h109
1 files changed, 19 insertions, 90 deletions
diff --git a/chromium/net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_stream.h b/chromium/net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_stream.h
index b7fc7141d99..61cd7e36f59 100644
--- a/chromium/net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_stream.h
+++ b/chromium/net/third_party/quiche/src/quiche/quic/core/http/quic_spdy_stream.h
@@ -129,7 +129,7 @@ class QUIC_EXPORT_PRIVATE QuicSpdyStream
ack_listener);
// Sends |data| to the peer, or buffers if it can't be sent immediately.
- void WriteOrBufferBody(absl::string_view data, bool fin);
+ virtual void WriteOrBufferBody(absl::string_view data, bool fin);
// Writes the trailers contained in |trailer_block| on the dedicated headers
// stream or on this stream, depending on VersionUsesHttp3(). Trailers will
@@ -254,98 +254,37 @@ class QUIC_EXPORT_PRIVATE QuicSpdyStream
bool OnCapsule(const Capsule& capsule) override;
void OnCapsuleParseFailure(const std::string& error_message) override;
- // Sends an HTTP/3 datagram. The stream and context IDs are not part of
- // |payload|.
- MessageStatus SendHttp3Datagram(
- absl::optional<QuicDatagramContextId> context_id,
- absl::string_view payload);
+ // Sends an HTTP/3 datagram. The stream ID is not part of |payload|.
+ MessageStatus SendHttp3Datagram(absl::string_view payload);
class QUIC_EXPORT_PRIVATE Http3DatagramVisitor {
public:
virtual ~Http3DatagramVisitor() {}
// Called when an HTTP/3 datagram is received. |payload| does not contain
- // the stream or context IDs. Note that this contains the stream ID even if
- // flow IDs from draft-ietf-masque-h3-datagram-00 are in use.
- virtual void OnHttp3Datagram(
- QuicStreamId stream_id,
- absl::optional<QuicDatagramContextId> context_id,
- absl::string_view payload) = 0;
+ // the stream ID.
+ virtual void OnHttp3Datagram(QuicStreamId stream_id,
+ absl::string_view payload) = 0;
};
- class QUIC_EXPORT_PRIVATE Http3DatagramRegistrationVisitor {
- public:
- virtual ~Http3DatagramRegistrationVisitor() {}
-
- // Called when a REGISTER_DATAGRAM_CONTEXT or REGISTER_DATAGRAM_NO_CONTEXT
- // capsule is received. Note that this contains the stream ID even if flow
- // IDs from draft-ietf-masque-h3-datagram-00 are in use.
- virtual void OnContextReceived(
- QuicStreamId stream_id,
- absl::optional<QuicDatagramContextId> context_id,
- DatagramFormatType format_type,
- absl::string_view format_additional_data) = 0;
-
- // Called when a CLOSE_DATAGRAM_CONTEXT capsule is received. Note that this
- // contains the stream ID even if flow IDs from
- // draft-ietf-masque-h3-datagram-00 are in use.
- virtual void OnContextClosed(
- QuicStreamId stream_id,
- absl::optional<QuicDatagramContextId> context_id,
- ContextCloseCode close_code, absl::string_view close_details) = 0;
- };
+ // Registers |visitor| to receive HTTP/3 datagrams. |visitor| must be
+ // valid until a corresponding call to UnregisterHttp3DatagramVisitor.
+ void RegisterHttp3DatagramVisitor(Http3DatagramVisitor* visitor);
+
+ // Unregisters an HTTP/3 datagram visitor. Must only be called after a call to
+ // RegisterHttp3DatagramVisitor.
+ void UnregisterHttp3DatagramVisitor();
- // Registers |visitor| to receive HTTP/3 datagram context registrations. This
- // must not be called without first calling
- // UnregisterHttp3DatagramRegistrationVisitor. |visitor| must be valid until a
- // corresponding call to UnregisterHttp3DatagramRegistrationVisitor.
- void RegisterHttp3DatagramRegistrationVisitor(
- Http3DatagramRegistrationVisitor* visitor,
- bool use_datagram_contexts = false);
-
- // Unregisters for HTTP/3 datagram context registrations. Must not be called
- // unless previously registered.
- void UnregisterHttp3DatagramRegistrationVisitor();
-
- // Moves an HTTP/3 datagram registration to a different visitor. Mainly meant
- // to be used by the visitors' move operators.
- void MoveHttp3DatagramRegistration(Http3DatagramRegistrationVisitor* visitor);
-
- // Registers |visitor| to receive HTTP/3 datagrams for optional context ID
- // |context_id|. This must not be called on a previously registered context ID
- // without first calling UnregisterHttp3DatagramContextId. |visitor| must be
- // valid until a corresponding call to UnregisterHttp3DatagramContextId. If
- // this method is called multiple times, the context ID MUST either be always
- // present, or always absent.
- void RegisterHttp3DatagramContextId(
- absl::optional<QuicDatagramContextId> context_id,
- DatagramFormatType format_type, absl::string_view format_additional_data,
- Http3DatagramVisitor* visitor);
-
- // Unregisters an HTTP/3 datagram context ID. Must be called on a previously
- // registered context.
- void UnregisterHttp3DatagramContextId(
- absl::optional<QuicDatagramContextId> context_id);
-
- // Moves an HTTP/3 datagram context ID to a different visitor. Mainly meant
- // to be used by the visitors' move operators.
- void MoveHttp3DatagramContextIdRegistration(
- absl::optional<QuicDatagramContextId> context_id,
- Http3DatagramVisitor* visitor);
+ // Replaces the current HTTP/3 datagram visitor with a different visitor.
+ // Mainly meant to be used by the visitors' move operators.
+ void ReplaceHttp3DatagramVisitor(Http3DatagramVisitor* visitor);
// Sets max datagram time in queue.
void SetMaxDatagramTimeInQueue(QuicTime::Delta max_time_in_queue);
- // Generates a new HTTP/3 datagram context ID for this stream. A datagram
- // registration visitor must be currently registered on this stream.
- QuicDatagramContextId GetNextDatagramContextId();
-
void OnDatagramReceived(QuicDataReader* reader);
- void RegisterHttp3DatagramFlowId(QuicDatagramStreamId flow_id);
-
- QuicByteCount GetMaxDatagramSize(
- absl::optional<QuicDatagramContextId> context_id) const;
+ QuicByteCount GetMaxDatagramSize() const;
// Writes |capsule| onto the DATA stream.
void WriteCapsule(const Capsule& capsule, bool fin = false);
@@ -445,11 +384,7 @@ class QUIC_EXPORT_PRIVATE QuicSpdyStream
void HandleBodyAvailable();
// Called when a datagram frame or capsule is received.
- void HandleReceivedDatagram(absl::optional<QuicDatagramContextId> context_id,
- absl::string_view payload);
-
- // Whether datagram contexts should be used on this stream.
- bool ShouldUseDatagramContexts() const;
+ void HandleReceivedDatagram(absl::string_view payload);
QuicSpdySession* spdy_session_;
@@ -526,13 +461,7 @@ class QUIC_EXPORT_PRIVATE QuicSpdyStream
std::unique_ptr<WebTransportDataStream> web_transport_data_;
// HTTP/3 Datagram support.
- Http3DatagramRegistrationVisitor* datagram_registration_visitor_ = nullptr;
- Http3DatagramVisitor* datagram_no_context_visitor_ = nullptr;
- absl::optional<QuicDatagramStreamId> datagram_flow_id_;
- QuicDatagramContextId datagram_next_available_context_id_;
- absl::flat_hash_map<QuicDatagramContextId, Http3DatagramVisitor*>
- datagram_context_visitors_;
- bool use_datagram_contexts_ = false;
+ Http3DatagramVisitor* datagram_visitor_ = nullptr;
};
} // namespace quic