merged AI doc, some new pages
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user