LCOV - code coverage report
Current view: top level - source/extensions/io_socket/user_space - io_handle.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 0 2 0.0 %
Date: 2024-01-05 06:35:25 Functions: 0 2 0.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/buffer/buffer.h"
       4             : #include "envoy/common/optref.h"
       5             : #include "envoy/common/pure.h"
       6             : #include "envoy/config/core/v3/base.pb.h"
       7             : #include "envoy/stream_info/filter_state.h"
       8             : 
       9             : namespace Envoy {
      10             : namespace Extensions {
      11             : namespace IoSocket {
      12             : namespace UserSpace {
      13             : 
      14             : // Shared state between peering user space IO handles.
      15             : class PassthroughState {
      16             : public:
      17           0 :   virtual ~PassthroughState() = default;
      18             : 
      19             :   /**
      20             :    * Initialize the passthrough state from the downstream. This should be
      21             :    * called at most once before `mergeInto`.
      22             :    */
      23             :   virtual void initialize(std::unique_ptr<envoy::config::core::v3::Metadata> metadata,
      24             :                           const StreamInfo::FilterState::Objects& filter_state_objects) PURE;
      25             : 
      26             :   /**
      27             :    * Merge the passthrough state into a recipient stream metadata and its
      28             :    * filter state. This should be called at most once after `initialize`.
      29             :    */
      30             :   virtual void mergeInto(envoy::config::core::v3::Metadata& metadata,
      31             :                          StreamInfo::FilterState& filter_state) PURE;
      32             : };
      33             : 
      34             : using PassthroughStateSharedPtr = std::shared_ptr<PassthroughState>;
      35             : 
      36             : /**
      37             :  * The interface for the peer as a writer and supplied read status query.
      38             :  */
      39             : class IoHandle {
      40             : public:
      41           0 :   virtual ~IoHandle() = default;
      42             : 
      43             :   /**
      44             :    * Set the flag to indicate no further write from peer.
      45             :    */
      46             :   virtual void setWriteEnd() PURE;
      47             : 
      48             :   /**
      49             :    * @return true if the peer promise no more write.
      50             :    */
      51             :   virtual bool isPeerShutDownWrite() const PURE;
      52             : 
      53             :   /**
      54             :    * Raised when peer is destroyed. No further write to peer is allowed.
      55             :    */
      56             :   virtual void onPeerDestroy() PURE;
      57             : 
      58             :   /**
      59             :    * Notify that consumable data arrived. The consumable data can be either data to read, or the end
      60             :    * of stream event.
      61             :    */
      62             :   virtual void setNewDataAvailable() PURE;
      63             : 
      64             :   /**
      65             :    * @return the buffer to be written.
      66             :    */
      67             :   virtual Buffer::Instance* getWriteBuffer() PURE;
      68             : 
      69             :   /**
      70             :    * @return true if more data is acceptable at the destination buffer.
      71             :    */
      72             :   virtual bool isWritable() const PURE;
      73             : 
      74             :   /**
      75             :    * @return true if peer is valid and writable.
      76             :    */
      77             :   virtual bool isPeerWritable() const PURE;
      78             : 
      79             :   /**
      80             :    * Raised by the peer when the peer switch from high water mark to low.
      81             :    */
      82             :   virtual void onPeerBufferLowWatermark() PURE;
      83             : 
      84             :   /**
      85             :    * @return true if the pending receive buffer is not empty or read_end is set.
      86             :    */
      87             :   virtual bool isReadable() const PURE;
      88             : 
      89             :   /**
      90             :    * @return shared state between peering user space IO handles.
      91             :    */
      92             :   virtual PassthroughStateSharedPtr passthroughState() PURE;
      93             : };
      94             : } // namespace UserSpace
      95             : } // namespace IoSocket
      96             : } // namespace Extensions
      97             : } // namespace Envoy

Generated by: LCOV version 1.15