- add sources.
[platform/framework/web/crosswalk.git] / src / net / tools / quic / quic_epoll_connection_helper.h
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
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_