/workspaces/astro/sol3-sdk/cpp/sol3/net/tcp_client.h Source File

Space-ng SDK: /workspaces/astro/sol3-sdk/cpp/sol3/net/tcp_client.h Source File
Space-ng SDK
tcp_client.h
Go to the documentation of this file.
1 // Copyright (c) Space-ng, inc. All rights reserved.
2 
3 #pragma once
4 
6 #include "sol3/net/framer.h"
7 #include "sol3/net/msg/tcp_client_config.h"
9 
10 #include <boost/asio/io_context.hpp>
11 
12 #include <cstdint>
13 #include <memory>
14 
15 namespace sol3::net {
16 
17 // Interface for a TCP client.
18 class ITcpClient {
19  public:
20  virtual ~ITcpClient() = default;
21  virtual void start(std::weak_ptr<IConnectionHandler> handler) = 0;
22  virtual void stop() = 0;
23  virtual void send(uint8_t const* data, size_t n) = 0;
24  virtual TcpTelemetry& telemetry() = 0;
25  virtual msg::TcpClientConfigT const& config() const = 0;
26 
27  static std::shared_ptr<ITcpClient> make(
28  boost::asio::io_context& io,
29  msg::TcpClientConfigT const& config,
30  std::unique_ptr<IFramer>&& framer);
31 };
32 
33 } // namespace sol3::net
Definition: tcp_client.h:18
virtual void stop()=0
virtual void start(std::weak_ptr< IConnectionHandler > handler)=0
virtual void send(uint8_t const *data, size_t n)=0
static std::shared_ptr< ITcpClient > make(boost::asio::io_context &io, msg::TcpClientConfigT const &config, std::unique_ptr< IFramer > &&framer)
virtual msg::TcpClientConfigT const & config() const =0
virtual TcpTelemetry & telemetry()=0
virtual ~ITcpClient()=default
Definition: tcp_telemetry.h:15
Definition: buffer_pool.h:12