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_ 60