This is an automated email from the ASF dual-hosted git repository.

maskit pushed a commit to branch quic-latest
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/quic-latest by this push:
     new fc88686  Reduce duplicate code
fc88686 is described below

commit fc88686b10f94b33a4cdc5976f81b417889d2020
Author: Masakazu Kitajo <mas...@apache.org>
AuthorDate: Wed Feb 27 15:21:47 2019 +0900

    Reduce duplicate code
---
 iocore/net/P_QUICNetVConnection.h |  2 +
 iocore/net/QUICNetVConnection.cc  | 86 ++++++++++++++++-----------------------
 2 files changed, 37 insertions(+), 51 deletions(-)

diff --git a/iocore/net/P_QUICNetVConnection.h 
b/iocore/net/P_QUICNetVConnection.h
index 1050902..f8a9132 100644
--- a/iocore/net/P_QUICNetVConnection.h
+++ b/iocore/net/P_QUICNetVConnection.h
@@ -304,6 +304,7 @@ private:
   void _close_path_validation_timeout(Event *data);
   Event *_path_validation_timeout = nullptr;
 
+  void _schedule_ack_manager_periodic(ink_hrtime interval);
   void _unschedule_ack_manager_periodic();
   Event *_ack_manager_periodic = nullptr;
 
@@ -357,6 +358,7 @@ private:
   bool _application_started = false;
   void _start_application();
 
+  void _handle_periodic_ack_event();
   void _handle_path_validation_timeout(Event *data);
   void _handle_idle_timeout();
 
diff --git a/iocore/net/QUICNetVConnection.cc b/iocore/net/QUICNetVConnection.cc
index 33f0e2c..d16542d 100644
--- a/iocore/net/QUICNetVConnection.cc
+++ b/iocore/net/QUICNetVConnection.cc
@@ -251,7 +251,7 @@ QUICNetVConnection::start()
     this->_hs_protocol       = 
this->_setup_handshake_protocol(params->server_ssl_ctx());
     this->_handshake_handler = new QUICHandshake(this, this->_hs_protocol, 
this->_reset_token, params->stateless_retry());
     this->_ack_frame_manager.set_max_ack_delay(params->max_ack_delay_in());
-    this->_ack_manager_periodic = this->thread->schedule_every(this, 
params->max_ack_delay_in(), QUIC_EVENT_ACK_PERIODIC);
+    this->_schedule_ack_manager_periodic(params->max_ack_delay_in());
   } else {
     
this->_pp_key_info.set_context(QUICPacketProtectionKeyInfo::Context::CLIENT);
     
this->_ack_frame_manager.set_ack_delay_exponent(params->ack_delay_exponent_out());
@@ -260,7 +260,7 @@ QUICNetVConnection::start()
     this->_handshake_handler->start(&this->_packet_factory, 
params->vn_exercise_enabled());
     this->_handshake_handler->do_handshake();
     this->_ack_frame_manager.set_max_ack_delay(params->max_ack_delay_out());
-    this->_ack_manager_periodic = this->thread->schedule_every(this, 
params->max_ack_delay_out(), QUIC_EVENT_ACK_PERIODIC);
+    this->_schedule_ack_manager_periodic(params->max_ack_delay_out());
   }
 
   this->_application_map = new QUICApplicationMap();
@@ -629,37 +629,16 @@ QUICNetVConnection::state_handshake(int event, Event 
*data)
     } while (error == nullptr && (result == QUICPacketCreationResult::SUCCESS 
|| result == QUICPacketCreationResult::IGNORED));
     break;
   }
-  case QUIC_EVENT_ACK_PERIODIC: {
-    ink_hrtime timestamp = Thread::get_hrtime();
-    bool need_schedule   = false;
-    for (auto level : QUIC_ENCRYPTION_LEVELS) {
-      if (this->_ack_frame_manager.will_generate_frame(level, timestamp)) {
-        need_schedule = true;
-        break;
-      }
-    }
-
-    if (!need_schedule) {
-      break;
-    }
-
-    // we have ack to send
-    // FIXME: should sent depend on socket event.
-    this->_schedule_packet_write_ready();
+  case QUIC_EVENT_ACK_PERIODIC:
+    this->_handle_periodic_ack_event();
     break;
-  }
-
-  case QUIC_EVENT_PACKET_WRITE_READY: {
+  case QUIC_EVENT_PACKET_WRITE_READY:
     this->_close_packet_write_ready(data);
-
     // TODO: support RETRY packet
     error = this->_state_common_send_packet();
-
     // Reschedule WRITE_READY
     this->_schedule_packet_write_ready(true);
-
     break;
-  }
   case QUIC_EVENT_PATH_VALIDATION_TIMEOUT:
     this->_handle_path_validation_timeout(data);
     break;
@@ -684,45 +663,25 @@ QUICNetVConnection::state_connection_established(int 
event, Event *data)
   SCOPED_MUTEX_LOCK(lock, this->mutex, this_ethread());
   QUICConnectionErrorUPtr error = nullptr;
   switch (event) {
-  case QUIC_EVENT_PACKET_READ_READY: {
+  case QUIC_EVENT_PACKET_READ_READY:
     error = this->_state_connection_established_receive_packet();
     break;
-  }
-  case QUIC_EVENT_ACK_PERIODIC: {
-    ink_hrtime timestamp = Thread::get_hrtime();
-    bool need_schedule   = false;
-    for (auto level : QUIC_ENCRYPTION_LEVELS) {
-      if (this->_ack_frame_manager.will_generate_frame(level, timestamp)) {
-        need_schedule = true;
-        break;
-      }
-    }
-
-    if (!need_schedule) {
-      break;
-    }
-
-    // we have ack to send
-    // FIXME: should sent depend on socket event.
-    this->_schedule_packet_write_ready();
+  case QUIC_EVENT_ACK_PERIODIC:
+    this->_handle_periodic_ack_event();
     break;
-  }
-
-  case QUIC_EVENT_PACKET_WRITE_READY: {
+  case QUIC_EVENT_PACKET_WRITE_READY:
     this->_close_packet_write_ready(data);
     error = this->_state_common_send_packet();
     // Reschedule WRITE_READY
     this->_schedule_packet_write_ready(true);
     break;
-  }
   case QUIC_EVENT_PATH_VALIDATION_TIMEOUT:
     this->_handle_path_validation_timeout(data);
     break;
-  case EVENT_IMMEDIATE: {
+  case EVENT_IMMEDIATE:
     // Start Immediate Close because of Idle Timeout
     this->_handle_idle_timeout();
     break;
-  }
   default:
     QUICConDebug("Unexpected event: %s (%d)", 
QUICDebugNames::quic_event(event), event);
   }
@@ -1729,6 +1688,12 @@ QUICNetVConnection::_unschedule_closing_timeout()
 }
 
 void
+QUICNetVConnection::_schedule_ack_manager_periodic(ink_hrtime interval)
+{
+  this->_ack_manager_periodic = this->thread->schedule_every(this, interval, 
QUIC_EVENT_ACK_PERIODIC);
+}
+
+void
 QUICNetVConnection::_unschedule_ack_manager_periodic()
 {
   if (this->_ack_manager_periodic) {
@@ -2134,6 +2099,25 @@ 
QUICNetVConnection::_state_connection_established_initiate_connection_migration(
 }
 
 void
+QUICNetVConnection::_handle_periodic_ack_event()
+{
+  ink_hrtime timestamp = Thread::get_hrtime();
+  bool need_schedule   = false;
+  for (auto level : QUIC_ENCRYPTION_LEVELS) {
+    if (this->_ack_frame_manager.will_generate_frame(level, timestamp)) {
+      need_schedule = true;
+      break;
+    }
+  }
+
+  if (need_schedule) {
+    // we have ack to send
+    // FIXME: should sent depend on socket event.
+    this->_schedule_packet_write_ready();
+  }
+}
+
+void
 QUICNetVConnection::_handle_path_validation_timeout(Event *data)
 {
   this->_close_path_validation_timeout(data);

Reply via email to