// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Handles packets for connection_ids in time wait state by discarding the // packet and sending the peers termination packets with exponential backoff. #ifndef QUICHE_QUIC_CORE_QUIC_TIME_WAIT_LIST_MANAGER_H_ #define QUICHE_QUIC_CORE_QUIC_TIME_WAIT_LIST_MANAGER_H_ #include <cstddef> #include <memory> #include "absl/container/flat_hash_map.h" #include "quiche/quic/core/quic_blocked_writer_interface.h" #include "quiche/quic/core/quic_connection_id.h" #include "quiche/quic/core/quic_framer.h" #include "quiche/quic/core/quic_packet_writer.h" #include "quiche/quic/core/quic_packets.h" #include "quiche/quic/core/quic_session.h" #include "quiche/quic/core/quic_types.h" #include "quiche/quic/platform/api/quic_flags.h" #include "quiche/common/quiche_linked_hash_map.h" namespace quic { namespace test { class QuicDispatcherPeer; class QuicTimeWaitListManagerPeer; } // namespace test // TimeWaitConnectionInfo comprises information of a connection which is in the // time wait list. struct QUICHE_EXPORT TimeWaitConnectionInfo { … }; // Maintains a list of all connection_ids that have been recently closed. A // connection_id lives in this state for time_wait_period_. All packets received // for connection_ids in this state are handed over to the // QuicTimeWaitListManager by the QuicDispatcher. Decides whether to send a // public reset packet, a copy of the previously sent connection close packet, // or nothing to the peer which sent a packet with the connection_id in time // wait state. After the connection_id expires its time wait period, a new // connection/session will be created if a packet is received for this // connection_id. class QUICHE_EXPORT QuicTimeWaitListManager : public QuicBlockedWriterInterface { … }; } // namespace quic #endif // QUICHE_QUIC_CORE_QUIC_TIME_WAIT_LIST_MANAGER_H_