MCPcopy Create free account
hub / github.com/apache/trafficserver / main_event_handler

Method main_event_handler

src/proxy/http2/Http2ClientSession.cc:166–257  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

164}
165
166int
167Http2ClientSession::main_event_handler(int event, void *edata)
168{
169 ink_assert(this->mutex->thread_holding == this_ethread());
170 int retval;
171 bool set_closed = false;
172
173 recursion++;
174
175 Event *e = static_cast<Event *>(edata);
176 if (e == schedule_event) {
177 schedule_event = nullptr;
178 }
179
180 switch (event) {
181 case VC_EVENT_READ_COMPLETE:
182 case VC_EVENT_READ_READY: {
183 bool is_zombie = connection_state.get_zombie_event() != nullptr;
184 retval = (this->*session_handler)(event, edata);
185 if (is_zombie && connection_state.get_zombie_event() != nullptr) {
186 Warning("Processed read event for zombie session %" PRId64, connection_id());
187 }
188 break;
189 }
190
191 case HTTP2_SESSION_EVENT_REENABLE:
192 // VIO will be reenableed in this handler
193 retval = (this->*session_handler)(VC_EVENT_READ_READY, static_cast<VIO *>(e->cookie));
194 // Clear the event after calling session_handler to not reschedule REENABLE in it
195 this->_reenable_event = nullptr;
196 break;
197
198 case VC_EVENT_ACTIVE_TIMEOUT:
199 case VC_EVENT_INACTIVITY_TIMEOUT:
200 case VC_EVENT_ERROR:
201 case VC_EVENT_EOS:
202 Http2SsnDebug("Closing event: %s", HttpDebugNames::get_event_name(event));
203 this->set_dying_event(event);
204 this->do_io_close();
205 retval = 0;
206 set_closed = true;
207 break;
208
209 case VC_EVENT_WRITE_READY:
210 case VC_EVENT_WRITE_COMPLETE:
211 this->connection_state.restart_streams();
212 if ((ink_get_hrtime() >= this->_write_buffer_last_flush + HRTIME_MSECONDS(this->_write_time_threshold))) {
213 this->flush();
214 }
215 retval = 0;
216 break;
217
218 case HTTP2_SESSION_EVENT_PRIO:
219 default:
220 Http2SsnDebug("unexpected event=%d edata=%p", event, edata);
221 ink_release_assert(0);
222 retval = 0;
223 break;

Callers

nothing calls this directly

Calls 15

do_io_closeMethod · 0.95
freeMethod · 0.95
this_ethreadFunction · 0.85
ink_get_hrtimeFunction · 0.85
get_zombie_eventMethod · 0.80
set_dying_eventMethod · 0.80
restart_streamsMethod · 0.80
get_shutdown_reasonMethod · 0.80
set_shutdown_stateMethod · 0.80
get_shutdown_stateMethod · 0.80
get_stream_error_rateMethod · 0.80
send_connection_eventFunction · 0.70

Tested by

no test coverage detected