blob: ec83be4f9f20b34624d3204cf115e072260ed78f [file] [log] [blame]
// Copyright 2013 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.
#ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_DISPATCHER_PEER_H_
#define QUICHE_QUIC_TEST_TOOLS_QUIC_DISPATCHER_PEER_H_
#include "quic/core/quic_connection_id.h"
#include "quic/core/quic_dispatcher.h"
namespace quic {
class QuicPacketWriterWrapper;
namespace test {
class QuicDispatcherPeer {
public:
QuicDispatcherPeer() = delete;
static QuicTimeWaitListManager* GetTimeWaitListManager(
QuicDispatcher* dispatcher);
static void SetTimeWaitListManager(
QuicDispatcher* dispatcher,
QuicTimeWaitListManager* time_wait_list_manager);
// Injects |writer| into |dispatcher| as the shared writer.
static void UseWriter(QuicDispatcher* dispatcher,
QuicPacketWriterWrapper* writer);
static QuicPacketWriter* GetWriter(QuicDispatcher* dispatcher);
static QuicCompressedCertsCache* GetCache(QuicDispatcher* dispatcher);
static QuicConnectionHelperInterface* GetHelper(QuicDispatcher* dispatcher);
static QuicAlarmFactory* GetAlarmFactory(QuicDispatcher* dispatcher);
static QuicDispatcher::WriteBlockedList* GetWriteBlockedList(
QuicDispatcher* dispatcher);
// Get the dispatcher's record of the last error reported to its framer
// visitor's OnError() method. Then set that record to QUIC_NO_ERROR.
static QuicErrorCode GetAndClearLastError(QuicDispatcher* dispatcher);
static QuicBufferedPacketStore* GetBufferedPackets(
QuicDispatcher* dispatcher);
static void set_new_sessions_allowed_per_event_loop(
QuicDispatcher* dispatcher,
size_t num_session_allowed);
static void SendPublicReset(
QuicDispatcher* dispatcher,
const QuicSocketAddress& self_address,
const QuicSocketAddress& peer_address,
QuicConnectionId connection_id,
bool ietf_quic,
size_t received_packet_length,
std::unique_ptr<QuicPerPacketContext> packet_context);
static std::unique_ptr<QuicPerPacketContext> GetPerPacketContext(
QuicDispatcher* dispatcher);
static void RestorePerPacketContext(QuicDispatcher* dispatcher,
std::unique_ptr<QuicPerPacketContext>);
static std::string SelectAlpn(QuicDispatcher* dispatcher,
const std::vector<std::string>& alpns);
// Get the first session in the session map. Returns nullptr if the map is
// empty.
static QuicSession* GetFirstSessionIfAny(QuicDispatcher* dispatcher);
// Find the corresponding session if exsits.
static const QuicSession* FindSession(const QuicDispatcher* dispatcher,
QuicConnectionId id);
static QuicAlarm* GetClearResetAddressesAlarm(QuicDispatcher* dispatcher);
};
} // namespace test
} // namespace quic
#endif // QUICHE_QUIC_TEST_TOOLS_QUIC_DISPATCHER_PEER_H_