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

Method main_event_handler

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 14

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
send_connection_eventFunction · 0.70
flushMethod · 0.45

Tested by

no test coverage detected