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 22namespace base { 23class TaskRunner; 24} // namespace base 25 26namespace net { 27 28class QuicClock; 29class QuicRandom; 30 31class 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::TaskRunner* task_runner_; 46 const QuicClock* clock_; 47 QuicRandom* random_generator_; 48 base::WeakPtrFactory<QuicConnectionHelper> weak_factory_; 49 50 DISALLOW_COPY_AND_ASSIGN(QuicConnectionHelper); 51}; 52 53} // namespace net 54 55#endif // NET_QUIC_QUIC_CONNECTION_HELPER_H_ 56