merged AI doc, some new pages

This commit is contained in:
2026-03-12 14:46:57 +03:00
parent 07ae277f9e
commit ed13838237
206 changed files with 14088 additions and 5152 deletions

View File

@@ -1,9 +1,8 @@
/*! \file piclientserver_client.h
* \ingroup ClientServer
* \~\brief
* \~english
* \~russian
*/
//! \~\file piclientserver_client.h
//! \~\ingroup ClientServer
//! \brief
//! \~english Client-side and server-side client connection classes
//! \~russian Классы клиентского подключения и серверного представления клиента
/*
PIP - Platform Independent Primitives
Ivan Pelipenko peri4ko@yandex.ru
@@ -33,18 +32,27 @@ namespace PIClientServer {
// ServerClient
//! ~english Server-side client implementation
//! ~russian Серверная реализация клиента
//! \~\ingroup ClientServer
//! \~\brief
//! \~english Server-side representation of one accepted client connection.
//! \~russian Серверное представление одного принятого клиентского соединения.
//! \details
//! \~english Server-side client representation. Created and managed by Server. Used to communicate with remote clients connected to the
//! server.
//! \~russian Представление клиента на стороне сервера. Создаётся и управляется сервером. Используется для коммуникации с удалёнными
//! клиентами, подключёнными к серверу.
class PIP_CLIENT_SERVER_EXPORT ServerClient: public ClientBase {
friend class Server;
NO_COPY_CLASS(ServerClient);
public:
//! \~english Constructs an unbound server-side client object.
//! \~russian Создает непривязанный объект серверного клиента.
ServerClient() {}
protected:
//! ~english Called before client destruction
//! ~russian Вызывается перед уничтожением клиента
//! \~english Called right before the server deletes this client object.
//! \~russian Вызывается непосредственно перед удалением этого объекта сервером.
virtual void aboutDelete() {}
private:
@@ -54,17 +62,28 @@ private:
// Client
//! ~english Client implementation for connecting to servers
//! ~russian Клиентская реализация для подключения к серверам
//! \~\ingroup ClientServer
//! \~\brief
//! \~english Active client connection that initiates a connection to a server.
//! \~russian Активное клиентское соединение, которое само подключается к серверу.
//! \details
//! \~english Client implementation for connecting to servers. Provides TCP connection to remote server with diagnostics and packet
//! streaming support.
//! \~russian Реализация клиента для подключения к серверам. Обеспечивает TCP-соединение с удалённым сервером с поддержкой диагностики и
//! потоковой передачи пакетов.
class PIP_CLIENT_SERVER_EXPORT Client: public ClientBase {
NO_COPY_CLASS(Client);
public:
//! \~english Constructs a client ready to connect to a remote server.
//! \~russian Создает клиент, готовый к подключению к удаленному серверу.
Client();
//! \~english Destroys the client and closes its connection if needed.
//! \~russian Уничтожает клиента и при необходимости закрывает его соединение.
~Client();
//! ~english Connects to specified server address
//! ~russian Подключается к указанному адресу сервера
//! \~english Connects to the server at address "addr".
//! \~russian Подключается к серверу по адресу "addr".
void connect(PINetworkAddress addr);
protected:

View File

@@ -1,9 +1,11 @@
/*! \file piclientserver_client_base.h
* \ingroup ClientServer
* \~\brief
* \~english
* \~russian
*/
//! \~\file piclientserver_client_base.h
//! \~\ingroup ClientServer
//! \brief
//! \~english Base class for client-server communication
//! \~russian Базовый класс для клиент-серверного взаимодействия
//! \details
//! \~english Provides base functionality for client-server communication with diagnostics support.
//! \~russian Обеспечивает базовую функциональность для клиент-серверного взаимодействия с поддержкой диагностики.
/*
PIP - Platform Independent Primitives
Ivan Pelipenko peri4ko@yandex.ru
@@ -35,77 +37,93 @@ namespace PIClientServer {
class Server;
class ClientInterface {};
//! ~english Base class for client-server communication with diagnostics support
//! ~russian Базовый класс для клиент-серверного взаимодействия с поддержкой диагностики
//! \~\ingroup ClientServer
//! \~\brief
//! \~english Base class for client and server-side client communication. Provides TCP connection management, diagnostics, and packet
//! streaming capabilities.
//! \~russian Базовый класс для клиентской и серверной коммуникации. Обеспечивает управление TCP-соединением, диагностику и потоковую
//! передачу пакетов.
// template<bool EnableDiagnostics = false>
class PIP_CLIENT_SERVER_EXPORT ClientBase {
friend class Server;
NO_COPY_CLASS(ClientBase);
public:
//! \~english Constructs a disconnected client connection object.
//! \~russian Создает объект клиентского соединения в отключенном состоянии.
ClientBase();
//! \~english Destroys the client connection and releases owned resources.
//! \~russian Уничтожает клиентское соединение и освобождает связанные ресурсы.
virtual ~ClientBase();
//! ~english Gets underlying TCP connection
//! ~russian Возвращает TCP-соединение
//! \~english Returns the underlying TCP transport object.
//! \~russian Возвращает базовый объект TCP-транспорта.
const PIEthernet * getTCP() const { return tcp; }
//! ~english Closes the connection
//! ~russian Закрывает соединение
//! \~english Closes the connection immediately.
//! \~russian Немедленно закрывает соединение.
void close();
//! ~english Gracefully stops and waits for completion
//! ~russian Плавно останавливает и ожидает завершения
//! \~english Stops the connection workflow and waits until shutdown completes.
//! \~russian Останавливает работу соединения и ждет полного завершения.
void stopAndWait();
//! ~english Writes byte array to the connection
//! ~russian Записывает массив байтов в соединение
//! \~english Sends raw payload bytes through the stream packer.
//! \~russian Отправляет сырые байты полезной нагрузки через упаковщик потока.
int write(const void * d, const size_t s);
//! ~english Writes byte array to the connection
//! ~russian Записывает массив байтов в соединение
//! \~english Sends payload stored in "ba".
//! \~russian Отправляет полезную нагрузку из "ba".
int write(const PIByteArray & ba) { return write(ba.data(), ba.size()); }
//! ~english Enables diagnostics collection
//! ~russian Включает сбор диагностики
//! \~english Enables connection diagnostics collection.
//! \~russian Включает сбор диагностики соединения.
void enableDiagnostics();
//! ~english Gets current diagnostics state
//! ~russian Возвращает текущее состояние диагностики
//! \~english Returns a snapshot of current diagnostics counters.
//! \~russian Возвращает снимок текущих диагностических счетчиков.
PIDiagnostics::State diagnostics() const;
//! ~english Gets current received packet bytes already received (all bytes count passed in \a receivePacketStart())
//! ~russian Возвращает сколько байт принимаемого пакета получено (общее количество передается в \a receivePacketStart())
//! \~english Returns how many payload bytes of the current packet are already received (all bytes count passed in \a receivePacketStart()).
//! \~russian Возвращает, сколько байтов полезной нагрузки текущего пакета уже получено (общее количество передается в \a receivePacketStart()).
int receivePacketProgress() const;
//! \~english Returns the current packet framing configuration.
//! \~russian Возвращает текущую конфигурацию пакетирования.
const PIStreamPackerConfig & configuration() const { return stream.configuration(); }
//! \~english Returns the current packet framing configuration for modification.
//! \~russian Возвращает текущую конфигурацию пакетирования для изменения.
PIStreamPackerConfig & configuration() { return stream.configuration(); }
//! \~english Replaces the packet framing configuration.
//! \~russian Заменяет конфигурацию пакетирования.
void setConfiguration(const PIStreamPackerConfig & config) { stream.setConfiguration(config); }
protected:
//! ~english Called when data is received
//! ~russian Вызывается при получении данных
//! \~english Called when a full payload packet is received.
//! \~russian Вызывается при получении полного пакета полезной нагрузки.
virtual void readed(PIByteArray data) {}
//! ~english Called when connection is established
//! ~russian Вызывается при установке соединения
//! \~english Called after the TCP connection becomes active.
//! \~russian Вызывается после перехода TCP-соединения в активное состояние.
virtual void connected() {}
//! ~english Called when connection is closed
//! ~russian Вызывается при закрытии соединения
//! \~english Called after the connection is closed.
//! \~russian Вызывается после закрытия соединения.
virtual void disconnected() {}
//! ~english Called when packet receiving starts
//! ~russian Вызывается при начале получения пакета
//! \~english Called when reception of a new packet starts.
//! \~russian Вызывается при начале приема нового пакета.
virtual void receivePacketStart(int size) {}
//! ~english Called when packet receiving ends
//! ~russian Вызывается при завершении получения пакета
//! \~english Called when reception of the current packet finishes.
//! \~russian Вызывается при завершении приема текущего пакета.
virtual void receivePacketEnd() {}
void init();

View File

@@ -1,9 +1,8 @@
/*! \file piclientserver_server.h
* \ingroup ClientServer
* \~\brief
* \~english
* \~russian
*/
//! \~\file piclientserver_server.h
//! \~\ingroup ClientServer
//! \brief
//! \~english TCP Server
//! \~russian TCP Сервер
/*
PIP - Platform Independent Primitives
Ivan Pelipenko peri4ko@yandex.ru
@@ -38,54 +37,72 @@ namespace PIClientServer {
class ServerClient;
//! ~english TCP server for client-server communication
//! ~russian TCP сервер для клиент-серверного взаимодействия
//! \~\ingroup ClientServer
//! \~\brief
//! \~english TCP server implementation for client-server communication. Accepts incoming connections and manages multiple clients with
//! configurable factory for client instance creation.
//! \~russian Реализация TCP сервера для клиент-серверного взаимодействия. Принимает входящие соединения и управляет несколькими клиентами с
//! настраиваемой фабрикой для создания экземпляров клиентов.
class PIP_CLIENT_SERVER_EXPORT Server: public PIStreamPackerConfig {
friend class ServerClient;
NO_COPY_CLASS(Server);
public:
//! \~english Constructs a stopped server with default limits.
//! \~russian Создает остановленный сервер с ограничениями по умолчанию.
Server();
//! \~english Stops the server and releases transport resources.
//! \~russian Останавливает сервер и освобождает транспортные ресурсы.
virtual ~Server();
//! ~english Starts listening on specified address
//! ~russian Начинает прослушивание на указанном адресе
//! \~english Starts listening for clients on address "addr".
//! \~russian Начинает принимать клиентов по адресу "addr".
void listen(PINetworkAddress addr);
//! ~english Starts listening on all interfaces
//! ~russian Начинает прослушивание на всех интерфейсах
//! \~english Starts listening on all interfaces at port "port".
//! \~russian Начинает прослушивание на всех интерфейсах на порту "port".
//! \~\details
//! \~english Equivalent to listen({0, port}), binds to all available network interfaces.
//! \~russian Эквивалентно listen({0, port}), привязывается ко всем доступным сетевым интерфейсам.
void listenAll(ushort port) { listen({0, port}); }
//! ~english Stops the server
//! ~russian Останавливает сервер
//! \~english Stops accepting clients and shuts the server down.
//! \~russian Прекращает прием клиентов и завершает работу сервера.
void stopServer();
//! ~english Closes all client connections
//! ~russian Закрывает все клиентские соединения
//! \~english Closes all currently connected clients.
//! \~russian Закрывает все текущие клиентские соединения.
//! \~\details
//! \~english Immediately closes all active client connections without stopping the server.
//! \~russian Немедленно закрывает все активные клиентские соединения без остановки сервера.
void closeAll();
//! ~english Gets maximum allowed clients
//! ~russian Возвращает максимальное число клиентов
//! \~english Returns the configured maximum number of simultaneous clients.
//! \~russian Возвращает настроенный максимум одновременных клиентов.
int getMaxClients() const { return max_clients; }
//! ~english Sets maximum allowed clients
//! ~russian Устанавливает максимальное число клиентов
//! \~english Sets the maximum number of simultaneous clients.
//! \~russian Устанавливает максимальное число одновременных клиентов.
//! \~\details
//! \~english Sets the maximum number of concurrent client connections. Default is 1000.
//! \~russian Устанавливает максимальное количество одновременных клиентских подключений. По умолчанию 1000.
void setMaxClients(int new_max_clients);
//! ~english Gets current clients count
//! ~russian Возвращает текущее количество клиентов
//! \~english Returns the number of currently connected clients.
//! \~russian Возвращает текущее количество подключенных клиентов.
int clientsCount() const;
//! ~english Executes function for each connected client
//! ~russian Выполняет функцию для каждого подключённого клиента
//! \~english Calls "func" for each currently connected client.
//! \~russian Вызывает "func" для каждого текущего подключенного клиента.
void forEachClient(std::function<void(ServerClient *)> func);
//! ~english Sets factory for creating new client instances
//! ~russian Устанавливает фабрику для создания клиентских экземпляров
//! \~english Sets the factory used to create accepted client objects.
//! \~russian Устанавливает фабрику, создающую объекты принятых клиентов.
void setClientFactory(std::function<ServerClient *()> f) { client_factory = f; }
private:

View File

@@ -1,7 +1,12 @@
//! \~\file piclientservermodule.h
//! \~\ingroup ClientServer
//! \~\brief
//! \~english Umbrella header and module group for TCP client-server helpers
//! \~russian Общий заголовок и группа модуля для TCP-клиент-серверных компонентов
/*
PIP - Platform Independent Primitives
Module includes
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
@@ -34,10 +39,10 @@
//! \~russian \par Общее
//!
//! \~english
//! These files provides server with clients dispatching for server-side and client for client-side.
//! These headers provide a TCP server with server-side client objects and an active client for remote connections.
//!
//! \~russian
//! Эти файлы предоставляют сервер с диспетчеризацией клиентов для серверной стороны и клиента для клиентской стороны.
//! Эти заголовки предоставляют TCP-сервер с серверными объектами клиентов и активного клиента для удаленных подключений.
//!
//! \~\authors
//! \~english