Home | History | Annotate | Download | only in quic
      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