From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- netwerk/protocol/http/Http3StreamBase.h | 68 +++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 netwerk/protocol/http/Http3StreamBase.h (limited to 'netwerk/protocol/http/Http3StreamBase.h') diff --git a/netwerk/protocol/http/Http3StreamBase.h b/netwerk/protocol/http/Http3StreamBase.h new file mode 100644 index 0000000000..6fe0bea108 --- /dev/null +++ b/netwerk/protocol/http/Http3StreamBase.h @@ -0,0 +1,68 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef mozilla_net_Http3StreamBase_h +#define mozilla_net_Http3StreamBase_h + +#include "nsAHttpTransaction.h" +#include "ARefBase.h" +#include "mozilla/WeakPtr.h" +#include "nsIClassOfService.h" + +namespace mozilla::net { + +class Http3Session; +class Http3Stream; +class Http3WebTransportSession; +class Http3WebTransportStream; + +class Http3StreamBase : public SupportsWeakPtr, public ARefBase { + public: + Http3StreamBase(nsAHttpTransaction* trans, Http3Session* session); + + virtual Http3WebTransportSession* GetHttp3WebTransportSession() = 0; + virtual Http3WebTransportStream* GetHttp3WebTransportStream() = 0; + virtual Http3Stream* GetHttp3Stream() = 0; + + bool HasStreamId() const { return mStreamId != UINT64_MAX; } + uint64_t StreamId() const { return mStreamId; } + + [[nodiscard]] virtual nsresult ReadSegments() = 0; + [[nodiscard]] virtual nsresult WriteSegments() = 0; + + virtual bool Done() const = 0; + + virtual void SetResponseHeaders(nsTArray& aResponseHeaders, bool fin, + bool interim) = 0; + + void SetQueued(bool aStatus) { mQueued = aStatus; } + bool Queued() const { return mQueued; } + + virtual void Close(nsresult aResult) = 0; + + nsAHttpTransaction* Transaction() { return mTransaction; } + + // Mirrors nsAHttpTransaction + virtual bool Do0RTT() { return false; } + virtual nsresult Finish0RTT(bool aRestart) { return NS_OK; } + + virtual bool RecvdFin() const { return mFin; } + virtual bool RecvdReset() const { return mResetRecv; } + virtual void SetRecvdReset() { mResetRecv = true; } + + protected: + ~Http3StreamBase(); + + uint64_t mStreamId{UINT64_MAX}; + RefPtr mTransaction; + RefPtr mSession; + bool mQueued{false}; + bool mFin{false}; + bool mResetRecv{false}; +}; + +} // namespace mozilla::net + +#endif // mozilla_net_Http3StreamBase_h -- cgit v1.2.3