27 class HTTPTransactionHandler;
118 virtual void onHeadersComplete(
StreamID stream,
119 std::unique_ptr<HTTPMessage> msg) = 0;
129 virtual void onBody(
StreamID stream,
130 std::unique_ptr<folly::IOBuf> chain,
164 virtual void onTrailersComplete(
StreamID stream,
165 std::unique_ptr<HTTPHeaders> trailers) = 0;
173 virtual void onMessageComplete(
StreamID stream,
bool upgrade) = 0;
181 virtual void onError(
StreamID stream,
183 bool newTxn =
false) = 0;
223 std::unique_ptr<folly::IOBuf> =
nullptr) {}
299 std::unique_ptr<folly::IOBuf> ) {
312 std::unique_ptr<folly::IOBuf> ) {
340 return defaultHPACKTableInfo;
394 virtual bool isBusy()
const = 0;
520 std::unique_ptr<folly::IOBuf> chain,
570 std::unique_ptr<folly::IOBuf> debugData =
nullptr) = 0;
634 std::unique_ptr<folly::IOBuf> ) {
645 std::unique_ptr<folly::IOBuf> ) {
virtual const HTTPSettings * getIngressSettings() const
virtual size_t onIngress(const folly::IOBuf &buf)=0
virtual size_t generatePingReply(folly::IOBufQueue &, uint64_t)
static const folly::Optional< uint8_t > NoPadding
virtual bool closeOnEgressComplete() const =0
virtual StreamID createStream()=0
virtual HTTPSettings * getEgressSettings()
virtual bool supportsSessionFlowControl() const
static const StreamID MAX_STREAM_ID
virtual bool supportsPushTransactions() const =0
virtual void generateHeader(folly::IOBufQueue &writeBuf, StreamID stream, const HTTPMessage &msg, bool eom=false, HTTPHeaderSize *size=nullptr)=0
virtual void setCallback(Callback *callback)=0
virtual void onSettings(const SettingsList &)
virtual void onChunkHeader(StreamID, size_t)
virtual void onExMessageBegin(StreamID, StreamID, bool, HTTPMessage *)
virtual void onGenerateFrameHeader(StreamID, uint8_t, uint64_t, uint16_t=0)
virtual void onPingReply(uint64_t)
virtual size_t generateChunkTerminator(folly::IOBufQueue &writeBuf, StreamID stream)=0
virtual HPACKTableInfo getHPACKTableInfo() const
virtual void onCertificate(uint16_t, std::unique_ptr< folly::IOBuf >)
virtual void onCertificateRequest(uint16_t, std::unique_ptr< folly::IOBuf >)
virtual CodecProtocol getProtocol() const =0
virtual void generatePushPromise(folly::IOBufQueue &, StreamID, const HTTPMessage &, StreamID, bool, HTTPHeaderSize *)
virtual void onPriority(StreamID, const HTTPMessage::HTTPPriority &)
requires And< SemiMovable< VN >... > &&SemiMovable< E > auto error(E e)
virtual size_t generateBody(folly::IOBufQueue &writeBuf, StreamID stream, std::unique_ptr< folly::IOBuf > chain, folly::Optional< uint8_t > padding, bool eom)=0
virtual size_t generateRstStream(folly::IOBufQueue &writeBuf, StreamID stream, ErrorCode code)=0
ExAttributes(StreamID controlStreamId, bool isUnidirectional)
virtual size_t generateTrailers(folly::IOBufQueue &writeBuf, StreamID stream, const HTTPHeaders &trailers)=0
virtual bool isWaitingToDrain() const =0
constexpr auto size(C const &c) -> decltype(c.size())
virtual void onIngressEOF()=0
virtual const std::string & getUserAgent() const =0
virtual void onPingRequest(uint64_t)
void writeBuf(const Buf &buf, folly::io::Appender &out)
virtual size_t generatePriority(folly::IOBufQueue &, StreamID, const HTTPMessage::HTTPPriority &)
virtual uint32_t numIncomingStreams() const
virtual bool supportsStreamFlowControl() const
virtual size_t generateCertificate(folly::IOBufQueue &, uint16_t, std::unique_ptr< folly::IOBuf >)
virtual bool supportsExTransactions() const
virtual void generateExHeader(folly::IOBufQueue &, StreamID, const HTTPMessage &, const HTTPCodec::ExAttributes &, bool, HTTPHeaderSize *)
virtual void onFrameHeader(StreamID, uint8_t, uint64_t, uint8_t, uint16_t=0)
virtual size_t generateConnectionPreface(folly::IOBufQueue &)
virtual size_t generateSettingsAck(folly::IOBufQueue &)
virtual size_t addPriorityNodes(PriorityQueue &, folly::IOBufQueue &, uint8_t)
virtual uint32_t getDefaultWindowSize() const
virtual size_t generateChunkHeader(folly::IOBufQueue &writeBuf, StreamID stream, size_t length)=0
virtual StreamID mapPriorityToDependency(uint8_t) const
virtual bool onIngressUpgradeMessage(const HTTPMessage &)
virtual void enableDoubleGoawayDrain()
virtual size_t generateEOM(folly::IOBufQueue &writeBuf, StreamID stream)=0
virtual void onSettingsAck()
virtual int8_t mapDependencyToPriority(StreamID) const
std::tuple< uint32_t, bool, uint8_t > HTTPPriority
std::vector< HTTPSetting > SettingsList
virtual StreamID getLastIncomingStreamID() const
virtual void onGoaway(uint64_t, ErrorCode, std::unique_ptr< folly::IOBuf >=nullptr)
virtual uint32_t numOutgoingStreams() const
virtual void onAbort(StreamID, ErrorCode)
virtual bool isReusable() const =0
static const folly::Optional< StreamID > NoStream
virtual size_t generateWindowUpdate(folly::IOBufQueue &, StreamID, uint32_t)
virtual void onWindowUpdate(StreamID, uint32_t)
virtual void onChunkComplete(StreamID)
virtual void setHeaderCodecStats(HeaderCodec::Stats *)
virtual size_t generateSettings(folly::IOBufQueue &)
virtual size_t generateGoaway(folly::IOBufQueue &writeBuf, StreamID lastStream, ErrorCode code, std::unique_ptr< folly::IOBuf > debugData=nullptr)=0
virtual void onPushMessageBegin(StreamID, StreamID, HTTPMessage *)
virtual bool isBusy() const =0
virtual void setParserPaused(bool paused)=0
virtual size_t generatePingRequest(folly::IOBufQueue &)
virtual bool supportsParallelRequests() const =0
folly::Function< void()> parent
virtual TransportDirection getTransportDirection() const =0
virtual bool onNativeProtocolUpgrade(StreamID, CodecProtocol, const std::string &, HTTPMessage &)
virtual size_t generateCertificateRequest(folly::IOBufQueue &, uint16_t, std::unique_ptr< folly::IOBuf >)
static const folly::Optional< ExAttributes > NoExAttributes