| // 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. | 
 |  | 
 | #include "quic/test_tools/quic_dispatcher_peer.h" | 
 |  | 
 | #include "quic/core/quic_dispatcher.h" | 
 | #include "quic/core/quic_packet_writer_wrapper.h" | 
 |  | 
 | namespace quic { | 
 | namespace test { | 
 |  | 
 | // static | 
 | QuicTimeWaitListManager* QuicDispatcherPeer::GetTimeWaitListManager( | 
 |     QuicDispatcher* dispatcher) { | 
 |   return dispatcher->time_wait_list_manager_.get(); | 
 | } | 
 |  | 
 | // static | 
 | void QuicDispatcherPeer::SetTimeWaitListManager( | 
 |     QuicDispatcher* dispatcher, | 
 |     QuicTimeWaitListManager* time_wait_list_manager) { | 
 |   dispatcher->time_wait_list_manager_.reset(time_wait_list_manager); | 
 | } | 
 |  | 
 | // static | 
 | void QuicDispatcherPeer::UseWriter(QuicDispatcher* dispatcher, | 
 |                                    QuicPacketWriterWrapper* writer) { | 
 |   writer->set_writer(dispatcher->writer_.release()); | 
 |   dispatcher->writer_.reset(writer); | 
 | } | 
 |  | 
 | // static | 
 | QuicPacketWriter* QuicDispatcherPeer::GetWriter(QuicDispatcher* dispatcher) { | 
 |   return dispatcher->writer_.get(); | 
 | } | 
 |  | 
 | // static | 
 | QuicCompressedCertsCache* QuicDispatcherPeer::GetCache( | 
 |     QuicDispatcher* dispatcher) { | 
 |   return dispatcher->compressed_certs_cache(); | 
 | } | 
 |  | 
 | // static | 
 | QuicConnectionHelperInterface* QuicDispatcherPeer::GetHelper( | 
 |     QuicDispatcher* dispatcher) { | 
 |   return dispatcher->helper_.get(); | 
 | } | 
 |  | 
 | // static | 
 | QuicAlarmFactory* QuicDispatcherPeer::GetAlarmFactory( | 
 |     QuicDispatcher* dispatcher) { | 
 |   return dispatcher->alarm_factory_.get(); | 
 | } | 
 |  | 
 | // static | 
 | QuicDispatcher::WriteBlockedList* QuicDispatcherPeer::GetWriteBlockedList( | 
 |     QuicDispatcher* dispatcher) { | 
 |   return &dispatcher->write_blocked_list_; | 
 | } | 
 |  | 
 | // static | 
 | QuicErrorCode QuicDispatcherPeer::GetAndClearLastError( | 
 |     QuicDispatcher* dispatcher) { | 
 |   QuicErrorCode ret = dispatcher->last_error_; | 
 |   dispatcher->last_error_ = QUIC_NO_ERROR; | 
 |   return ret; | 
 | } | 
 |  | 
 | // static | 
 | QuicBufferedPacketStore* QuicDispatcherPeer::GetBufferedPackets( | 
 |     QuicDispatcher* dispatcher) { | 
 |   return &(dispatcher->buffered_packets_); | 
 | } | 
 |  | 
 | // static | 
 | void QuicDispatcherPeer::set_new_sessions_allowed_per_event_loop( | 
 |     QuicDispatcher* dispatcher, | 
 |     size_t num_session_allowed) { | 
 |   dispatcher->new_sessions_allowed_per_event_loop_ = num_session_allowed; | 
 | } | 
 |  | 
 | // static | 
 | void QuicDispatcherPeer::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) { | 
 |   dispatcher->time_wait_list_manager()->SendPublicReset( | 
 |       self_address, peer_address, connection_id, ietf_quic, | 
 |       received_packet_length, std::move(packet_context)); | 
 | } | 
 |  | 
 | // static | 
 | std::unique_ptr<QuicPerPacketContext> QuicDispatcherPeer::GetPerPacketContext( | 
 |     QuicDispatcher* dispatcher) { | 
 |   return dispatcher->GetPerPacketContext(); | 
 | } | 
 |  | 
 | // static | 
 | void QuicDispatcherPeer::RestorePerPacketContext( | 
 |     QuicDispatcher* dispatcher, | 
 |     std::unique_ptr<QuicPerPacketContext> context) { | 
 |   dispatcher->RestorePerPacketContext(std::move(context)); | 
 | } | 
 |  | 
 | // static | 
 | std::string QuicDispatcherPeer::SelectAlpn( | 
 |     QuicDispatcher* dispatcher, | 
 |     const std::vector<std::string>& alpns) { | 
 |   return dispatcher->SelectAlpn(alpns); | 
 | } | 
 |  | 
 | // static | 
 | QuicSession* QuicDispatcherPeer::GetFirstSessionIfAny( | 
 |     QuicDispatcher* dispatcher) { | 
 |   if (dispatcher->reference_counted_session_map_.empty()) { | 
 |     return nullptr; | 
 |   } | 
 |   return dispatcher->reference_counted_session_map_.begin()->second.get(); | 
 | } | 
 |  | 
 | // static | 
 | const QuicSession* QuicDispatcherPeer::FindSession( | 
 |     const QuicDispatcher* dispatcher, | 
 |     QuicConnectionId id) { | 
 |   auto it = dispatcher->reference_counted_session_map_.find(id); | 
 |   return (it == dispatcher->reference_counted_session_map_.end()) | 
 |              ? nullptr | 
 |              : it->second.get(); | 
 | } | 
 |  | 
 | }  // namespace test | 
 | }  // namespace quic |