1
#pragma once
2

            
3
#include <memory>
4

            
5
#include "source/common/common/logger.h"
6
#include "source/common/quic/quic_network_connectivity_observer.h"
7

            
8
namespace Envoy {
9
namespace Quic {
10

            
11
class EnvoyQuicClientSession;
12

            
13
class QuicNetworkConnectivityObserverImpl : public QuicNetworkConnectivityObserver,
14
                                            protected Logger::Loggable<Logger::Id::connection> {
15
public:
16
  // session must outlive this object.
17
  explicit QuicNetworkConnectivityObserverImpl(EnvoyQuicClientSession& session);
18
  QuicNetworkConnectivityObserverImpl(const QuicNetworkConnectivityObserverImpl&) = delete;
19
  QuicNetworkConnectivityObserverImpl&
20
  operator=(const QuicNetworkConnectivityObserverImpl&) = delete;
21

            
22
  // QuicNetworkConnectivityObserver
23
  void onNetworkMadeDefault(NetworkHandle network) override;
24
  void onNetworkConnected(NetworkHandle network) override;
25
  void onNetworkDisconnected(NetworkHandle network) override;
26

            
27
private:
28
  EnvoyQuicClientSession& session_;
29
};
30

            
31
} // namespace Quic
32
} // namespace Envoy