xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/http2/adapter/event_forwarder.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 #include "quiche/http2/adapter/event_forwarder.h"
2 
3 namespace http2 {
4 namespace adapter {
5 
EventForwarder(ForwardPredicate can_forward,spdy::SpdyFramerVisitorInterface & receiver)6 EventForwarder::EventForwarder(ForwardPredicate can_forward,
7                                spdy::SpdyFramerVisitorInterface& receiver)
8     : can_forward_(std::move(can_forward)), receiver_(receiver) {}
9 
OnError(Http2DecoderAdapter::SpdyFramerError error,std::string detailed_error)10 void EventForwarder::OnError(Http2DecoderAdapter::SpdyFramerError error,
11                              std::string detailed_error) {
12   if (can_forward_()) {
13     receiver_.OnError(error, std::move(detailed_error));
14   }
15 }
16 
OnCommonHeader(spdy::SpdyStreamId stream_id,size_t length,uint8_t type,uint8_t flags)17 void EventForwarder::OnCommonHeader(spdy::SpdyStreamId stream_id, size_t length,
18                                     uint8_t type, uint8_t flags) {
19   if (can_forward_()) {
20     receiver_.OnCommonHeader(stream_id, length, type, flags);
21   }
22 }
23 
OnDataFrameHeader(spdy::SpdyStreamId stream_id,size_t length,bool fin)24 void EventForwarder::OnDataFrameHeader(spdy::SpdyStreamId stream_id,
25                                        size_t length, bool fin) {
26   if (can_forward_()) {
27     receiver_.OnDataFrameHeader(stream_id, length, fin);
28   }
29 }
30 
OnStreamFrameData(spdy::SpdyStreamId stream_id,const char * data,size_t len)31 void EventForwarder::OnStreamFrameData(spdy::SpdyStreamId stream_id,
32                                        const char* data, size_t len) {
33   if (can_forward_()) {
34     receiver_.OnStreamFrameData(stream_id, data, len);
35   }
36 }
37 
OnStreamEnd(spdy::SpdyStreamId stream_id)38 void EventForwarder::OnStreamEnd(spdy::SpdyStreamId stream_id) {
39   if (can_forward_()) {
40     receiver_.OnStreamEnd(stream_id);
41   }
42 }
43 
OnStreamPadLength(spdy::SpdyStreamId stream_id,size_t value)44 void EventForwarder::OnStreamPadLength(spdy::SpdyStreamId stream_id,
45                                        size_t value) {
46   if (can_forward_()) {
47     receiver_.OnStreamPadLength(stream_id, value);
48   }
49 }
50 
OnStreamPadding(spdy::SpdyStreamId stream_id,size_t len)51 void EventForwarder::OnStreamPadding(spdy::SpdyStreamId stream_id, size_t len) {
52   if (can_forward_()) {
53     receiver_.OnStreamPadding(stream_id, len);
54   }
55 }
56 
OnHeaderFrameStart(spdy::SpdyStreamId stream_id)57 spdy::SpdyHeadersHandlerInterface* EventForwarder::OnHeaderFrameStart(
58     spdy::SpdyStreamId stream_id) {
59   return receiver_.OnHeaderFrameStart(stream_id);
60 }
61 
OnHeaderFrameEnd(spdy::SpdyStreamId stream_id)62 void EventForwarder::OnHeaderFrameEnd(spdy::SpdyStreamId stream_id) {
63   if (can_forward_()) {
64     receiver_.OnHeaderFrameEnd(stream_id);
65   }
66 }
67 
OnRstStream(spdy::SpdyStreamId stream_id,spdy::SpdyErrorCode error_code)68 void EventForwarder::OnRstStream(spdy::SpdyStreamId stream_id,
69                                  spdy::SpdyErrorCode error_code) {
70   if (can_forward_()) {
71     receiver_.OnRstStream(stream_id, error_code);
72   }
73 }
74 
OnSettings()75 void EventForwarder::OnSettings() {
76   if (can_forward_()) {
77     receiver_.OnSettings();
78   }
79 }
80 
OnSetting(spdy::SpdySettingsId id,uint32_t value)81 void EventForwarder::OnSetting(spdy::SpdySettingsId id, uint32_t value) {
82   if (can_forward_()) {
83     receiver_.OnSetting(id, value);
84   }
85 }
86 
OnSettingsEnd()87 void EventForwarder::OnSettingsEnd() {
88   if (can_forward_()) {
89     receiver_.OnSettingsEnd();
90   }
91 }
92 
OnSettingsAck()93 void EventForwarder::OnSettingsAck() {
94   if (can_forward_()) {
95     receiver_.OnSettingsAck();
96   }
97 }
98 
OnPing(spdy::SpdyPingId unique_id,bool is_ack)99 void EventForwarder::OnPing(spdy::SpdyPingId unique_id, bool is_ack) {
100   if (can_forward_()) {
101     receiver_.OnPing(unique_id, is_ack);
102   }
103 }
104 
OnGoAway(spdy::SpdyStreamId last_accepted_stream_id,spdy::SpdyErrorCode error_code)105 void EventForwarder::OnGoAway(spdy::SpdyStreamId last_accepted_stream_id,
106                               spdy::SpdyErrorCode error_code) {
107   if (can_forward_()) {
108     receiver_.OnGoAway(last_accepted_stream_id, error_code);
109   }
110 }
111 
OnGoAwayFrameData(const char * goaway_data,size_t len)112 bool EventForwarder::OnGoAwayFrameData(const char* goaway_data, size_t len) {
113   if (can_forward_()) {
114     return receiver_.OnGoAwayFrameData(goaway_data, len);
115   }
116   return false;
117 }
118 
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)119 void EventForwarder::OnHeaders(spdy::SpdyStreamId stream_id,
120                                size_t payload_length, bool has_priority,
121                                int weight, spdy::SpdyStreamId parent_stream_id,
122                                bool exclusive, bool fin, bool end) {
123   if (can_forward_()) {
124     receiver_.OnHeaders(stream_id, payload_length, has_priority, weight,
125                         parent_stream_id, exclusive, fin, end);
126   }
127 }
128 
OnWindowUpdate(spdy::SpdyStreamId stream_id,int delta_window_size)129 void EventForwarder::OnWindowUpdate(spdy::SpdyStreamId stream_id,
130                                     int delta_window_size) {
131   if (can_forward_()) {
132     receiver_.OnWindowUpdate(stream_id, delta_window_size);
133   }
134 }
135 
OnPushPromise(spdy::SpdyStreamId stream_id,spdy::SpdyStreamId promised_stream_id,bool end)136 void EventForwarder::OnPushPromise(spdy::SpdyStreamId stream_id,
137                                    spdy::SpdyStreamId promised_stream_id,
138                                    bool end) {
139   if (can_forward_()) {
140     receiver_.OnPushPromise(stream_id, promised_stream_id, end);
141   }
142 }
143 
OnContinuation(spdy::SpdyStreamId stream_id,size_t payload_length,bool end)144 void EventForwarder::OnContinuation(spdy::SpdyStreamId stream_id,
145                                     size_t payload_length, bool end) {
146   if (can_forward_()) {
147     receiver_.OnContinuation(stream_id, payload_length, end);
148   }
149 }
150 
OnAltSvc(spdy::SpdyStreamId stream_id,absl::string_view origin,const spdy::SpdyAltSvcWireFormat::AlternativeServiceVector & altsvc_vector)151 void EventForwarder::OnAltSvc(
152     spdy::SpdyStreamId stream_id, absl::string_view origin,
153     const spdy::SpdyAltSvcWireFormat::AlternativeServiceVector& altsvc_vector) {
154   if (can_forward_()) {
155     receiver_.OnAltSvc(stream_id, origin, altsvc_vector);
156   }
157 }
158 
OnPriority(spdy::SpdyStreamId stream_id,spdy::SpdyStreamId parent_stream_id,int weight,bool exclusive)159 void EventForwarder::OnPriority(spdy::SpdyStreamId stream_id,
160                                 spdy::SpdyStreamId parent_stream_id, int weight,
161                                 bool exclusive) {
162   if (can_forward_()) {
163     receiver_.OnPriority(stream_id, parent_stream_id, weight, exclusive);
164   }
165 }
166 
OnPriorityUpdate(spdy::SpdyStreamId prioritized_stream_id,absl::string_view priority_field_value)167 void EventForwarder::OnPriorityUpdate(spdy::SpdyStreamId prioritized_stream_id,
168                                       absl::string_view priority_field_value) {
169   if (can_forward_()) {
170     receiver_.OnPriorityUpdate(prioritized_stream_id, priority_field_value);
171   }
172 }
173 
OnUnknownFrame(spdy::SpdyStreamId stream_id,uint8_t frame_type)174 bool EventForwarder::OnUnknownFrame(spdy::SpdyStreamId stream_id,
175                                     uint8_t frame_type) {
176   if (can_forward_()) {
177     return receiver_.OnUnknownFrame(stream_id, frame_type);
178   }
179   return false;
180 }
181 
OnUnknownFrameStart(spdy::SpdyStreamId stream_id,size_t length,uint8_t type,uint8_t flags)182 void EventForwarder::OnUnknownFrameStart(spdy::SpdyStreamId stream_id,
183                                          size_t length, uint8_t type,
184                                          uint8_t flags) {
185   if (can_forward_()) {
186     receiver_.OnUnknownFrameStart(stream_id, length, type, flags);
187   }
188 }
189 
OnUnknownFramePayload(spdy::SpdyStreamId stream_id,absl::string_view payload)190 void EventForwarder::OnUnknownFramePayload(spdy::SpdyStreamId stream_id,
191                                            absl::string_view payload) {
192   if (can_forward_()) {
193     receiver_.OnUnknownFramePayload(stream_id, payload);
194   }
195 }
196 
197 }  // namespace adapter
198 }  // namespace http2
199