• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 Google-specific helper for QuicConnection which uses
6 // EpollAlarm for alarms, and used an int fd_ for writing data.
7 
8 #ifndef NET_TOOLS_QUIC_QUIC_EPOLL_CONNECTION_HELPER_H_
9 #define NET_TOOLS_QUIC_QUIC_EPOLL_CONNECTION_HELPER_H_
10 
11 #include <sys/types.h>
12 #include <set>
13 
14 #include "net/quic/quic_connection.h"
15 #include "net/quic/quic_packet_writer.h"
16 #include "net/quic/quic_protocol.h"
17 #include "net/quic/quic_time.h"
18 #include "net/tools/quic/quic_default_packet_writer.h"
19 #include "net/tools/quic/quic_epoll_clock.h"
20 
21 namespace net {
22 
23 class EpollServer;
24 class QuicRandom;
25 
26 namespace tools {
27 
28 class AckAlarm;
29 class RetransmissionAlarm;
30 class SendAlarm;
31 class TimeoutAlarm;
32 
33 class QuicEpollConnectionHelper : public QuicConnectionHelperInterface {
34  public:
35   explicit QuicEpollConnectionHelper(EpollServer* eps);
36   virtual ~QuicEpollConnectionHelper();
37 
38   // QuicEpollConnectionHelperInterface
39   virtual const QuicClock* GetClock() const OVERRIDE;
40   virtual QuicRandom* GetRandomGenerator() OVERRIDE;
41   virtual QuicAlarm* CreateAlarm(QuicAlarm::Delegate* delegate) OVERRIDE;
42 
epoll_server()43   EpollServer* epoll_server() { return epoll_server_; }
44 
45  private:
46   friend class QuicConnectionPeer;
47 
48   EpollServer* epoll_server_;  // Not owned.
49 
50   const QuicEpollClock clock_;
51   QuicRandom* random_generator_;
52 
53   DISALLOW_COPY_AND_ASSIGN(QuicEpollConnectionHelper);
54 };
55 
56 }  // namespace tools
57 }  // namespace net
58 
59 #endif  // NET_TOOLS_QUIC_QUIC_EPOLL_CONNECTION_HELPER_H_
60