1
#pragma once
2
#include "envoy/network/io_handle.h"
3
#include "envoy/network/transport_socket.h"
4

            
5
namespace Envoy {
6
namespace Extensions {
7
namespace TransportSockets {
8
namespace Alts {
9

            
10
/**
11
 * A TransportSocketCallbacks for wrapped TransportSocket object. Some
12
 * TransportSocket implementation wraps another socket which does actual I/O.
13
 * This class is used by the wrapped socket as its callbacks instead of the real
14
 * connection to hold back callbacks from the underlying socket to connection.
15
 */
16
class NoOpTransportSocketCallbacks : public Network::TransportSocketCallbacks {
17
public:
18
  explicit NoOpTransportSocketCallbacks(Network::TransportSocketCallbacks& parent)
19
55
      : parent_(parent) {}
20

            
21
83
  Network::IoHandle& ioHandle() override { return parent_.ioHandle(); }
22
  const Network::IoHandle& ioHandle() const override { return parent_.ioHandle(); }
23
1
  Network::Connection& connection() override { return parent_.connection(); }
24
1
  bool shouldDrainReadBuffer() override { return false; }
25
  /*
26
   * No-op for these two methods to hold back the callbacks.
27
   */
28
6
  void setTransportSocketIsReadable() override {}
29
1
  void raiseEvent(Network::ConnectionEvent) override {}
30
1
  void flushWriteBuffer() override {}
31

            
32
private:
33
  Network::TransportSocketCallbacks& parent_;
34
};
35

            
36
using NoOpTransportSocketCallbacksPtr = std::unique_ptr<NoOpTransportSocketCallbacks>;
37

            
38
} // namespace Alts
39
} // namespace TransportSockets
40
} // namespace Extensions
41
} // namespace Envoy