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 pibroadcast.h
* \ingroup IO-Utils
* \~\brief
* \~english Broadcast for all interfaces, including loopback
* \~russian Широкое вещание на все интерфейсы, включая loopback
*/
//! \~\file pibroadcast.h
//! \~\ingroup IO-Utils
//! \~\brief
//! \~english Multi-interface UDP broadcast, multicast and loopback helper
//! \~russian Вспомогательный класс для UDP broadcast, multicast и loopback на нескольких интерфейсах
/*
PIP - Platform Independent Primitives
Broadcast for all interfaces, including loopback
@@ -31,106 +30,140 @@
#include "pip_io_utils_export.h"
//! \~\ingroup IO-Utils
//! \~\brief
//! \~english Multi-channel sender and receiver over multicast, broadcast and loopback endpoints.
//! \~russian Многоканальный отправитель и приемник через multicast-, broadcast- и loopback-конечные точки.
class PIP_IO_UTILS_EXPORT PIBroadcast
: public PIThread
, public PIEthUtilBase {
PIOBJECT_SUBCLASS(PIBroadcast, PIThread);
public:
//! %PIBroadcast channels, can be used independently
//! \~english Transport channels that may be enabled independently.
//! \~russian Транспортные каналы, которые можно включать независимо.
enum Channel {
Multicast /** Use multicast addresses */ = 0x01,
Broadcast /** Use broadcast addresses */ = 0x02,
Loopback /** Use loopback addresses */ = 0x04,
All /** Use all channels */ = 0xFFFF,
Multicast = 0x01 /** \~english Use multicast addresses \~russian Использовать multicast-адреса */,
Broadcast = 0x02 /** \~english Use broadcast addresses \~russian Использовать broadcast-адреса */,
Loopback = 0x04 /** \~english Use loopback addresses \~russian Использовать loopback-адреса */,
All = 0xFFFF /** \~english Use all channels \~russian Использовать все каналы */
};
//! \~english Bitmask of enabled \a Channel values.
//! \~russian Битовая маска включенных значений \a Channel.
typedef PIFlags<Channel> Channels;
/** Contructs %PIBroadcast, if \"send_only\" not set
* all PIEthernets will be binded to receive data
* */
//! \~english Constructs broadcaster, optionally in send-only mode.
//! \~russian Создает broadcaster, при необходимости в режиме только отправки.
//! \~\details
//! \~english
//! When "send_only" is false, receive sockets are initialized too.
//! \~russian
//! Если "send_only" равно false, также инициализируются приемные сокеты.
PIBroadcast(bool send_only = false);
//! \~english Destroys broadcaster and owned transport endpoints.
//! \~russian Уничтожает broadcaster и принадлежащие ему транспортные конечные точки.
~PIBroadcast();
//! Set channels to \"ch\" and queue to reinit
//! \~english Sets enabled channels and schedules reinitialization.
//! \~russian Устанавливает включенные каналы и планирует переинициализацию.
void setChannels(Channels ch);
//! Returns channels
//! \~english Returns enabled channels.
//! \~russian Возвращает включенные каналы.
Channels channels() const { return _channels; }
//! Returns if is send_only
//! \~english Returns whether this instance is send-only.
//! \~russian Возвращает, работает ли экземпляр только на отправку.
bool isSendOnly() const { return _send_only; }
//! Set multicast IP to \"mg\" and queue to reinit
//! \~english Sets multicast group IP and schedules reinitialization.
//! \~russian Устанавливает IP multicast-группы и планирует переинициализацию.
void setMulticastGroup(const PIString & mg);
//! Returns multicast IP
//! \~english Returns multicast group IP.
//! \~russian Возвращает IP multicast-группы.
PIString multicastGroup() const { return mcast_address.ipString(); }
//! Set multicast port to \"port\" and queue to reinit
//! \~english Sets multicast port and schedules reinitialization.
//! \~russian Устанавливает multicast-порт и планирует переинициализацию.
void setMulticastPort(ushort port);
//! Returns multicast port
//! \~english Returns multicast port.
//! \~russian Возвращает multicast-порт.
ushort multicastPort() const { return mcast_address.port(); }
//! Set multicast address to \"addr\" and queue to reinit
//! \~english Sets full multicast address and schedules reinitialization.
//! \~russian Устанавливает полный multicast-адрес и планирует переинициализацию.
void setMulticastAddress(const PINetworkAddress & addr);
//! Returns multicast address
//! \~english Returns multicast endpoint address.
//! \~russian Возвращает адрес multicast-конечной точки.
PINetworkAddress multicastAddress() const { return mcast_address; }
//! Set broadcast port to \"port\" and queue to reinit
//! \~english Sets broadcast port and schedules reinitialization.
//! \~russian Устанавливает broadcast-порт и планирует переинициализацию.
void setBroadcastPort(ushort port);
//! Returns broadcast port
//! \~english Returns broadcast port.
//! \~russian Возвращает broadcast-порт.
ushort broadcastPort() { return bcast_port; }
//! Set loopback start port to \"port\" and queue to reinit
//! \~english Sets first loopback port and schedules reinitialization.
//! \~russian Устанавливает первый loopback-порт и планирует переинициализацию.
void setLoopbackPort(ushort port);
//! Returns loopback start port
//! \~english Returns first loopback port.
//! \~russian Возвращает первый loopback-порт.
ushort loopbackPort() { return lo_port; }
//! Set loopback ports count to \"count\" and queue to reinit
//! \~english Sets number of loopback ports and schedules reinitialization.
//! \~russian Устанавливает число loopback-портов и планирует переинициализацию.
void setLoopbackPortsCount(int count);
//! Returns loopback ports count
//! \~english Returns number of loopback ports.
//! \~russian Возвращает число loopback-портов.
int loopbackPortsCount() const { return lo_pcnt; }
//! If not send_only starts all threaded reads
//! \~english Starts receiving on all initialized channels.
//! \~russian Запускает прием на всех инициализированных каналах.
void startRead();
//! Stop all threaded reads
//! \~english Stops receiving on all initialized channels.
//! \~russian Останавливает прием на всех инициализированных каналах.
void stopRead();
//! Reinit all PIEthernets with current \a PIEthernet::allAddresses()
//! \~english Rebuilds transport endpoints for current \a PIEthernet::allAddresses().
//! \~russian Пересоздает транспортные конечные точки для текущего списка \a PIEthernet::allAddresses().
void reinit();
//! Send packet
//! \~english Sends one packet through all enabled channels.
//! \~russian Отправляет один пакет через все включенные каналы.
void send(const PIByteArray & data);
EVENT1(receiveEvent, PIByteArray, data);
//! \events
//! \{
//! \fn void receiveEvent(PIByteArray data)
//! \brief Raise on packet received
//! \~english Emitted when a packet is received on any active channel.
//! \~russian Генерируется при получении пакета на любом активном канале.
EVENT1(receiveEvent, PIByteArray, data);
//! \}
protected:
//! Called when packet received
//! \~english Called when a packet is received.
//! \~russian Вызывается при получении пакета.
virtual void received(PIByteArray data) {}
//! Called when addresses are changed
//! \~english Called after local interface address list changes.
//! \~russian Вызывается после изменения списка адресов локальных интерфейсов.
virtual void addressesChanged() {}
private: