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 21namespace net { 22 23class EpollServer; 24class QuicRandom; 25 26namespace tools { 27 28class AckAlarm; 29class RetransmissionAlarm; 30class SendAlarm; 31class TimeoutAlarm; 32 33class 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