1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // 5 // The Chrome-specific helper for QuicConnection which uses 6 // a TaskRunner for alarms, and uses a DatagramClientSocket for writing data. 7 8 #ifndef NET_QUIC_QUIC_CONNECTION_HELPER_H_ 9 #define NET_QUIC_QUIC_CONNECTION_HELPER_H_ 10 11 #include "net/quic/quic_connection.h" 12 13 #include <set> 14 15 #include "base/basictypes.h" 16 #include "base/memory/weak_ptr.h" 17 #include "net/base/ip_endpoint.h" 18 #include "net/quic/quic_protocol.h" 19 #include "net/quic/quic_time.h" 20 #include "net/udp/datagram_client_socket.h" 21 22 namespace base { 23 class TaskRunner; 24 } // namespace base 25 26 namespace net { 27 28 class QuicClock; 29 class QuicRandom; 30 31 class NET_EXPORT_PRIVATE QuicConnectionHelper 32 : public QuicConnectionHelperInterface { 33 public: 34 QuicConnectionHelper(base::TaskRunner* task_runner, 35 const QuicClock* clock, 36 QuicRandom* random_generator); 37 virtual ~QuicConnectionHelper(); 38 39 // QuicConnectionHelperInterface 40 virtual const QuicClock* GetClock() const OVERRIDE; 41 virtual QuicRandom* GetRandomGenerator() OVERRIDE; 42 virtual QuicAlarm* CreateAlarm(QuicAlarm::Delegate* delegate) OVERRIDE; 43 44 private: 45 base::WeakPtrFactory<QuicConnectionHelper> weak_factory_; 46 base::TaskRunner* task_runner_; 47 const QuicClock* clock_; 48 QuicRandom* random_generator_; 49 50 DISALLOW_COPY_AND_ASSIGN(QuicConnectionHelper); 51 }; 52 53 } // namespace net 54 55 #endif // NET_QUIC_QUIC_CONNECTION_HELPER_H_ 56