| #include "quiche/http2/adapter/event_forwarder.h" | |
| namespace http2 { | |
| namespace adapter { | |
| EventForwarder::EventForwarder(ForwardPredicate can_forward, | |
| spdy::SpdyFramerVisitorInterface& receiver) | |
| : can_forward_(std::move(can_forward)), receiver_(receiver) {} | |
| void EventForwarder::OnError(Http2DecoderAdapter::SpdyFramerError error, | |
| std::string detailed_error) { | |
| if (can_forward_()) { | |
| receiver_.OnError(error, std::move(detailed_error)); | |
| } | |
| } | |
| void EventForwarder::OnCommonHeader(spdy::SpdyStreamId stream_id, size_t length, | |
| uint8_t type, uint8_t flags) { | |
| if (can_forward_()) { | |
| receiver_.OnCommonHeader(stream_id, length, type, flags); | |
| } | |
| } | |
| void EventForwarder::OnDataFrameHeader(spdy::SpdyStreamId stream_id, | |
| size_t length, bool fin) { | |
| if (can_forward_()) { | |
| receiver_.OnDataFrameHeader(stream_id, length, fin); | |
| } | |
| } | |
| void EventForwarder::OnStreamFrameData(spdy::SpdyStreamId stream_id, | |
| const char* data, size_t len) { | |
| if (can_forward_()) { | |
| receiver_.OnStreamFrameData(stream_id, data, len); | |
| } | |
| } | |
| void EventForwarder::OnStreamEnd(spdy::SpdyStreamId stream_id) { | |
| if (can_forward_()) { | |
| receiver_.OnStreamEnd(stream_id); | |
| } | |
| } | |
| void EventForwarder::OnStreamPadLength(spdy::SpdyStreamId stream_id, | |
| size_t value) { | |
| if (can_forward_()) { | |
| receiver_.OnStreamPadLength(stream_id, value); | |
| } | |
| } | |
| void EventForwarder::OnStreamPadding(spdy::SpdyStreamId stream_id, size_t len) { | |
| if (can_forward_()) { | |
| receiver_.OnStreamPadding(stream_id, len); | |
| } | |
| } | |
| spdy::SpdyHeadersHandlerInterface* EventForwarder::OnHeaderFrameStart( | |
| spdy::SpdyStreamId stream_id) { | |
| return receiver_.OnHeaderFrameStart(stream_id); | |
| } | |
| void EventForwarder::OnHeaderFrameEnd(spdy::SpdyStreamId stream_id) { | |
| if (can_forward_()) { | |
| receiver_.OnHeaderFrameEnd(stream_id); | |
| } | |
| } | |
| void EventForwarder::OnRstStream(spdy::SpdyStreamId stream_id, | |
| spdy::SpdyErrorCode error_code) { | |
| if (can_forward_()) { | |
| receiver_.OnRstStream(stream_id, error_code); | |
| } | |
| } | |
| void EventForwarder::OnSettings() { | |
| if (can_forward_()) { | |
| receiver_.OnSettings(); | |
| } | |
| } | |
| void EventForwarder::OnSetting(spdy::SpdySettingsId id, uint32_t value) { | |
| if (can_forward_()) { | |
| receiver_.OnSetting(id, value); | |
| } | |
| } | |
| void EventForwarder::OnSettingsEnd() { | |
| if (can_forward_()) { | |
| receiver_.OnSettingsEnd(); | |
| } | |
| } | |
| void EventForwarder::OnSettingsAck() { | |
| if (can_forward_()) { | |
| receiver_.OnSettingsAck(); | |
| } | |
| } | |
| void EventForwarder::OnPing(spdy::SpdyPingId unique_id, bool is_ack) { | |
| if (can_forward_()) { | |
| receiver_.OnPing(unique_id, is_ack); | |
| } | |
| } | |
| void EventForwarder::OnGoAway(spdy::SpdyStreamId last_accepted_stream_id, | |
| spdy::SpdyErrorCode error_code) { | |
| if (can_forward_()) { | |
| receiver_.OnGoAway(last_accepted_stream_id, error_code); | |
| } | |
| } | |
| bool EventForwarder::OnGoAwayFrameData(const char* goaway_data, size_t len) { | |
| if (can_forward_()) { | |
| return receiver_.OnGoAwayFrameData(goaway_data, len); | |
| } | |
| return false; | |
| } | |
| void EventForwarder::OnHeaders(spdy::SpdyStreamId stream_id, | |
| size_t payload_length, bool has_priority, | |
| int weight, spdy::SpdyStreamId parent_stream_id, | |
| bool exclusive, bool fin, bool end) { | |
| if (can_forward_()) { | |
| receiver_.OnHeaders(stream_id, payload_length, has_priority, weight, | |
| parent_stream_id, exclusive, fin, end); | |
| } | |
| } | |
| void EventForwarder::OnWindowUpdate(spdy::SpdyStreamId stream_id, | |
| int delta_window_size) { | |
| if (can_forward_()) { | |
| receiver_.OnWindowUpdate(stream_id, delta_window_size); | |
| } | |
| } | |
| void EventForwarder::OnPushPromise(spdy::SpdyStreamId stream_id, | |
| spdy::SpdyStreamId promised_stream_id, | |
| bool end) { | |
| if (can_forward_()) { | |
| receiver_.OnPushPromise(stream_id, promised_stream_id, end); | |
| } | |
| } | |
| void EventForwarder::OnContinuation(spdy::SpdyStreamId stream_id, | |
| size_t payload_length, bool end) { | |
| if (can_forward_()) { | |
| receiver_.OnContinuation(stream_id, payload_length, end); | |
| } | |
| } | |
| void EventForwarder::OnAltSvc( | |
| spdy::SpdyStreamId stream_id, absl::string_view origin, | |
| const spdy::SpdyAltSvcWireFormat::AlternativeServiceVector& altsvc_vector) { | |
| if (can_forward_()) { | |
| receiver_.OnAltSvc(stream_id, origin, altsvc_vector); | |
| } | |
| } | |
| void EventForwarder::OnPriority(spdy::SpdyStreamId stream_id, | |
| spdy::SpdyStreamId parent_stream_id, int weight, | |
| bool exclusive) { | |
| if (can_forward_()) { | |
| receiver_.OnPriority(stream_id, parent_stream_id, weight, exclusive); | |
| } | |
| } | |
| void EventForwarder::OnPriorityUpdate(spdy::SpdyStreamId prioritized_stream_id, | |
| absl::string_view priority_field_value) { | |
| if (can_forward_()) { | |
| receiver_.OnPriorityUpdate(prioritized_stream_id, priority_field_value); | |
| } | |
| } | |
| bool EventForwarder::OnUnknownFrame(spdy::SpdyStreamId stream_id, | |
| uint8_t frame_type) { | |
| if (can_forward_()) { | |
| return receiver_.OnUnknownFrame(stream_id, frame_type); | |
| } | |
| return false; | |
| } | |
| void EventForwarder::OnUnknownFrameStart(spdy::SpdyStreamId stream_id, | |
| size_t length, uint8_t type, | |
| uint8_t flags) { | |
| if (can_forward_()) { | |
| receiver_.OnUnknownFrameStart(stream_id, length, type, flags); | |
| } | |
| } | |
| void EventForwarder::OnUnknownFramePayload(spdy::SpdyStreamId stream_id, | |
| absl::string_view payload) { | |
| if (can_forward_()) { | |
| receiver_.OnUnknownFramePayload(stream_id, payload); | |
| } | |
| } | |
| } // namespace adapter | |
| } // namespace http2 |