OpenVPN 3 Core Library
Loading...
Searching...
No Matches
tcplinkbase.hpp
Go to the documentation of this file.
1// Copyright (C) 2012- OpenVPN Inc.
2//
3// SPDX-License-Identifier: MPL-2.0 OR AGPL-3.0-only WITH openvpn3-openssl-exception
4
5// Base class for generic link objects.
6
9#include <openvpn/io/io.hpp>
10
11#ifdef OPENVPN_GREMLIN
13#endif
14
15#pragma once
16
17namespace openvpn::TCPTransport {
19{
20 using SPtr = std::unique_ptr<PacketFrom>;
22};
23
24class LinkBase : public RC<thread_unsafe_refcount>
25{
26 protected:
27 virtual void recv_buffer(PacketFrom::SPtr &pfp,
28 const size_t bytes_recvd) = 0;
29 virtual void from_app_send_buffer(BufferPtr &buf) = 0;
30
31 public:
33
34 virtual bool send_queue_empty() const = 0;
35 virtual size_t send_queue_size() const = 0;
36 virtual void reset_align_adjust(const size_t align_adjust) = 0;
37 virtual bool send(BufferAllocated &b) = 0;
38 virtual void set_raw_mode(const bool mode) = 0;
39 virtual void start() = 0;
40 virtual void stop() = 0;
41#ifdef OPENVPN_GREMLIN
42 virtual void gremlin_config(openvpn_io::io_context &io_context,
43 const Gremlin::Config::Ptr &config) = 0;
44#endif
45};
46} // namespace openvpn::TCPTransport
Reference count base class for objects tracked by RCPtr. Disallows copying and assignment.
Definition rc.hpp:908
virtual bool send(BufferAllocated &b)=0
virtual bool send_queue_empty() const =0
virtual void set_raw_mode(const bool mode)=0
virtual void from_app_send_buffer(BufferPtr &buf)=0
virtual size_t send_queue_size() const =0
virtual void recv_buffer(PacketFrom::SPtr &pfp, const size_t bytes_recvd)=0
virtual void reset_align_adjust(const size_t align_adjust)=0
std::unique_ptr< PacketFrom > SPtr
static const char config[]