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