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
10#pragma once
11
12namespace openvpn::TCPTransport {
14{
15 typedef std::unique_ptr<PacketFrom> SPtr;
17};
18
19class LinkBase : public RC<thread_unsafe_refcount>
20{
21 protected:
22 virtual void recv_buffer(PacketFrom::SPtr &pfp,
23 const size_t bytes_recvd) = 0;
24 virtual void from_app_send_buffer(BufferPtr &buf) = 0;
25
26 public:
28
29 virtual bool send_queue_empty() const = 0;
30 virtual size_t send_queue_size() const = 0;
31 virtual void reset_align_adjust(const size_t align_adjust) = 0;
32 virtual bool send(BufferAllocated &b) = 0;
33 virtual void set_raw_mode(const bool mode) = 0;
34 virtual void start() = 0;
35 virtual void stop() = 0;
36};
37} // namespace openvpn::TCPTransport
Reference count base class for objects tracked by RCPtr. Disallows copying and assignment.
Definition rc.hpp:912
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