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

Space-ng SDK: /workspaces/astro/sol3-sdk/cpp/sol3/net/tcp_server.h Source File
Space-ng SDK
tcp_server.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_server_config.h"
10 
11 #include <boost/asio/io_context.hpp>
12 
13 #include <cstdint>
14 #include <memory>
15 
16 namespace sol3::net {
17 
18 // Interface for a TCP server.
19 class ITcpServer {
20  public:
21  virtual ~ITcpServer() = default;
22  virtual void start(std::weak_ptr<IConnectionHandler> weak_handler) = 0;
23  virtual void stop() = 0;
25  virtual void broadcast(uint8_t const* data, size_t n) = 0;
27  virtual void sendTo(
28  TcpConnectionId connection_id, uint8_t const* data, size_t n) = 0;
31  virtual void requestRead(TcpConnectionId connection_id) = 0;
32  virtual TcpTelemetry& telemetry() = 0;
33  virtual msg::TcpServerConfigT const& config() const = 0;
34 
35  static std::shared_ptr<ITcpServer> make(
36  boost::asio::io_context& io,
37  msg::TcpServerConfigT const& config,
38  std::unique_ptr<IFramer>&& framer);
39 };
40 
41 } // namespace sol3::net
Definition: tcp_server.h:19
virtual void broadcast(uint8_t const *data, size_t n)=0
Broadcast to all connected clients.
static std::shared_ptr< ITcpServer > make(boost::asio::io_context &io, msg::TcpServerConfigT const &config, std::unique_ptr< IFramer > &&framer)
virtual void start(std::weak_ptr< IConnectionHandler > weak_handler)=0
virtual void sendTo(TcpConnectionId connection_id, uint8_t const *data, size_t n)=0
Send to a single client.
virtual void stop()=0
virtual ~ITcpServer()=default
virtual void requestRead(TcpConnectionId connection_id)=0
virtual TcpTelemetry & telemetry()=0
virtual msg::TcpServerConfigT const & config() const =0
Definition: tcp_telemetry.h:15
Definition: buffer_pool.h:12
uint64_t TcpConnectionId
A unique identifier for a TCP connection.
Definition: tcp_connection_id.h:10