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

Method state_stream_open

src/proxy/http3/Http3Transaction.cc:460–522  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

458}
459
460int
461Http3Transaction::state_stream_open(int event, Event *edata)
462{
463 // TODO: should check recursive call?
464 ink_release_assert(this->_thread == this_ethread());
465 SCOPED_MUTEX_LOCK(lock, this->mutex, this_ethread());
466
467 switch (event) {
468 case VC_EVENT_READ_READY:
469 Http3TransVDebug("%s (%d)", get_vc_event_name(event), event);
470 this->_close_read_ready_event(edata);
471 // if no progress, don't need to signal
472 if (this->_process_read_vio() > 0) {
473 this->_signal_read_event();
474 }
475 this->_info.read_vio->reenable();
476 break;
477 case VC_EVENT_READ_COMPLETE:
478 Http3TransVDebug("%s (%d)", get_vc_event_name(event), event);
479 this->_close_read_complete_event(edata);
480 this->_process_read_vio();
481 if (!this->_header_handler->is_complete()) {
482 // Delay processing READ_COMPLETE
483 this->_schedule_read_complete_event();
484 break;
485 }
486 this->_data_handler->finalize();
487 // always signal regardless of progress
488 this->_signal_read_event();
489 this->_info.read_vio->reenable();
490 break;
491 case VC_EVENT_WRITE_READY:
492 this->_close_write_ready_event(edata);
493 Http3TransVDebug("%s (%d)", get_vc_event_name(event), event);
494 // if no progress, don't need to signal
495 if (this->_process_write_vio() > 0) {
496 this->_signal_write_event();
497 }
498 this->_info.write_vio->reenable();
499 break;
500 case VC_EVENT_WRITE_COMPLETE:
501 this->_close_write_complete_event(edata);
502 Http3TransVDebug("%s (%d)", get_vc_event_name(event), event);
503 this->_process_write_vio();
504 // always signal regardless of progress
505 this->_signal_write_event();
506 this->_info.write_vio->reenable();
507 break;
508 case VC_EVENT_EOS:
509 case VC_EVENT_ERROR:
510 case VC_EVENT_INACTIVITY_TIMEOUT:
511 case VC_EVENT_ACTIVE_TIMEOUT: {
512 Http3TransVDebug("%s (%d)", get_vc_event_name(event), event);
513 this->_signal_event(event, edata);
514 break;
515 }
516 default:
517 Http3TransDebug("Unknown event %d", event);

Callers

nothing calls this directly

Calls 15

_process_read_vioMethod · 0.95
_process_write_vioMethod · 0.95
this_ethreadFunction · 0.85
get_vc_event_nameFunction · 0.85
_signal_read_eventMethod · 0.80
is_completeMethod · 0.80
_signal_write_eventMethod · 0.80

Tested by

no test coverage detected