PIP 5.5.3
Platform-Independent Primitives
Классы | Открытые типы | Открытые члены | Открытые статические члены | Защищенные члены | Полный список членов класса
Класс PIEthernet

Ethernet device. Подробнее...

#include <piethernet.h>

Граф наследования:PIEthernet:
Inheritance graph
[см. легенду]

Классы

struct  Interface
 Network interface descriptor. Подробнее...
 
class  InterfaceList
 Array of Interface with some features. Подробнее...
 

Открытые типы

enum  Type { UDP , TCP_Client , TCP_Server }
 Type of PIEthernet. Подробнее...
 
enum  Parameters {
  ReuseAddress = 0x1 , Broadcast = 0x2 , SeparateSockets = 0x4 , MulticastLoop = 0x8 ,
  KeepConnection = 0x10 , DisonnectOnTimeout = 0x20 , NoDelay = 0x40
}
 Parameters of PIEthernet. Подробнее...
 
enum  InterfaceFlag {
  ifActive = 0x1 , ifRunning = 0x2 , ifBroadcast = 0x4 , ifMulticast = 0x8 ,
  ifLoopback = 0x10 , ifPTP = 0x20
}
 Flags of network interface. Подробнее...
 
typedef PIFlags< InterfaceFlagInterfaceFlags
 PIFlags of network interface flags
 
- Открытые типы унаследованные от PIIODevice
enum  DeviceMode { ReadOnly = 0x01 , WriteOnly = 0x02 , ReadWrite = 0x03 }
 Режимы открытия для PIIODevice. Подробнее...
 
enum  DeviceOption { BlockingRead = 0x01 , BlockingWrite = 0x02 }
 Опции для PIIODevice, работает для некоторых устройств Подробнее...
 
enum  DeviceInfoFlag { Sequential = 0x01 , Reliable = 0x02 }
 Характеристики канала PIIODevice. Подробнее...
 

Открытые члены

 PIEthernet ()
 Contructs UDP PIEthernet with empty read address.
 
 PIEthernet (Type type, const PIString &ip_port=PIString(), const PIFlags< Parameters > params=PIEthernet::ReuseAddress|PIEthernet::MulticastLoop|PIEthernet::KeepConnection)
 Contructs PIEthernet with type "type", read address "ip_port" and parameters "params".
 
void setReadAddress (const PIString &ip, int port)
 Set read address.
 
void setReadAddress (const PIString &ip_port)
 Set read address in format "i.i.i.i:p".
 
void setReadAddress (const PINetworkAddress &addr)
 Set read address.
 
void setReadIP (const PIString &ip)
 Set read IP.
 
void setReadPort (int port)
 Set read port.
 
void setSendAddress (const PIString &ip, int port)
 Set send address.
 
void setSendAddress (const PIString &ip_port)
 Set send address in format "i.i.i.i:p".
 
void setSendAddress (const PINetworkAddress &addr)
 Set send address.
 
void setSendIP (const PIString &ip)
 Set send IP.
 
void setSendPort (int port)
 Set send port.
 
PINetworkAddress readAddress () const
 Returns read address in format "i.i.i.i:p".
 
PIString readIP () const
 Returns read IP.
 
int readPort () const
 Returns read port.
 
PINetworkAddress sendAddress () const
 Returns send address in format "i.i.i.i:p".
 
PIString sendIP () const
 Returns send IP.
 
int sendPort () const
 Returns send port.
 
PINetworkAddress lastReadAddress () const
 Returns address of last received UDP packet in format "i.i.i.i:p".
 
PIString lastReadIP () const
 Returns IP of last received UDP packet.
 
int lastReadPort () const
 Returns port of last received UDP packet.
 
void setParameters (PIFlags< PIEthernet::Parameters > parameters_)
 Set parameters to "parameters_". You should to reopen PIEthernet to apply them.
 
void setParameter (PIEthernet::Parameters parameter, bool on=true)
 Set parameter "parameter" to state "on". You should to reopen PIEthernet to apply this.
 
bool isParameterSet (PIEthernet::Parameters parameter) const
 Returns if parameter "parameter" is set.
 
PIFlags< PIEthernet::Parametersparameters () const
 Returns parameters.
 
Type type () const
 Returns PIEthernet type.
 
PISystemTime readTimeout () const
 Returns read timeout.
 
PISystemTime writeTimeout () const
 Returns write timeout.
 
void setReadTimeout (PISystemTime tm)
 Set timeout for read.
 
void setWriteTimeout (PISystemTime tm)
 Set timeout for write.
 
void setReadBufferSize (int bytes)
 Set socket receive buffer size.
 
void setWriteBufferSize (int bytes)
 Set socket send buffer size.
 
int TTL () const
 Returns TTL (Time To Live)
 
int multicastTTL () const
 Returns multicast TTL (Time To Live)
 
void setTTL (int ttl)
 Set TTL (Time To Live), default is 64.
 
void setMulticastTTL (int ttl)
 Set multicast TTL (Time To Live), default is 1.
 
bool joinMulticastGroup (const PIString &group)
 Join to multicast group with address "group". Use only for UDP.
 
bool leaveMulticastGroup (const PIString &group)
 Leave multicast group with address "group". Use only for UDP.
 
const PIStringListmulticastGroups () const
 Returns joined multicast groups. Use only for UDP.
 
bool connect (bool threaded=true)
 If "threaded" queue connect to TCP server with address readAddress() in any read() or write() call. Otherwise connect immediate. Use only for TCP_Client.
 
bool connect (const PIString &ip, int port, bool threaded=true)
 Connect to TCP server with address "ip":"port". Use only for TCP_Client.
 
bool connect (const PIString &ip_port, bool threaded=true)
 Connect to TCP server with address "ip_port". Use only for TCP_Client.
 
bool connect (const PINetworkAddress &addr, bool threaded=true)
 Connect to TCP server with address "addr". Use only for TCP_Client.
 
bool isConnected () const
 Returns if PIEthernet connected to TCP server. Use only for TCP_Client.
 
bool isConnecting () const
 Returns if PIEthernet is connecting to TCP server. Use only for TCP_Client.
 
bool listen (bool threaded=false)
 Start listen for incoming TCP connections on address readAddress(). Use only for TCP_Server.
 
bool listen (const PIString &ip, int port, bool threaded=false)
 Start listen for incoming TCP connections on address "ip":"port". Use only for TCP_Server.
 
bool listen (const PIString &ip_port, bool threaded=false)
 Start listen for incoming TCP connections on address "ip_port". Use only for TCP_Server.
 
bool listen (const PINetworkAddress &addr, bool threaded=false)
 Start listen for incoming TCP connections on address "addr". Use only for TCP_Server.
 
bool send (const void *data, int size, bool threaded=false)
 Send data "data" with size "size" to address sendAddress() for UDP or readAddress() for TCP_Client.
 
bool send (const PIString &ip, int port, const void *data, int size, bool threaded=false)
 Send data "data" with size "size" to address "ip":"port".
 
bool send (const PIString &ip_port, const void *data, int size, bool threaded=false)
 Send data "data" with size "size" to address "ip_port".
 
bool send (const PINetworkAddress &addr, const void *data, int size, bool threaded=false)
 Send data "data" with size "size" to address "addr".
 
bool send (const PIByteArray &data, bool threaded=false)
 Send data "data" to address sendAddress() for UDP or readAddress() for TCP_Client.
 
bool send (const PIString &ip, int port, const PIByteArray &data, bool threaded=false)
 Send data "data" to address "ip":"port" for UDP.
 
bool send (const PIString &ip_port, const PIByteArray &data, bool threaded=false)
 Send data "data" to address "ip_port" for UDP.
 
bool send (const PINetworkAddress &addr, const PIByteArray &data, bool threaded=false)
 Send data "data" to address "addr" for UDP.
 
bool canWrite () const override
 Возвращает может ли устройство писать сейчас
 
void interrupt () override
 Прерывает блокирующую операцию.
 
- Открытые члены унаследованные от PIIODevice
 PIIODevice ()
 Создает пустой PIIODevice.
 
 PIIODevice (const PIString &path, DeviceMode mode=ReadWrite)
 Создает PIIODevice с путём "path" и режимом открытия "mode".
 
DeviceMode mode () const
 Возвращает текущий режим открытия устройства
 
void setMode (DeviceMode m)
 Устанавливает режим открытия устройства. Не переоткрывает устройство
 
DeviceOptions options () const
 Возвращает текущие опции устройства
 
bool isOptionSet (DeviceOption o) const
 Возвращает текущее состояние опции "o".
 
void setOptions (DeviceOptions o)
 Устанавливает опции устройства
 
bool setOption (DeviceOption o, bool yes=true)
 Устанавливает опцию "o" устройства в "yes" и возвращает предыдущее состояние опции
 
DeviceInfoFlags infoFlags () const
 Возвращает характеристики канала
 
PIString path () const
 Возвращает текущий путь устройства
 
void setPath (const PIString &path)
 Устанавливает путь устройства. Не переоткрывает устройство
 
bool isReadable () const
 Возвращает равен ли режим открытия ReadOnly или ReadWrite.
 
bool isWriteable () const
 Возвращает равен ли режим открытия WriteOnly или ReadWrite.
 
bool isOpened () const
 Возвращает успешно ли открыто устройство
 
bool isClosed () const
 Возвращает закрыто ли устройство
 
virtual bool canRead () const
 Возвращает может ли устройство читать сейчас
 
virtual bool canWrite () const
 Возвращает может ли устройство писать сейчас
 
void setReopenEnabled (bool yes=true)
 Устанавливает возможность вызова open() при потоковом чтении на закрытом устройстве
 
void setReopenTimeout (PISystemTime timeout)
 Устанавливает задержку между вызовами open() если переоткрытие активно
 
bool isReopenEnabled () const
 Возвращает активно ли переоткрытие
 
PISystemTime reopenTimeout ()
 Возвращает задержку переоткрытия
 
void setThreadedReadSlot (ReadRetFunc func)
 Устанавливает callback потокового чтения Подробнее...
 
void setThreadedReadData (void *d)
 Устанавливает произвольный указатель, который будет передан в callback потокового чтения
 
void setThreadedReadBufferSize (int new_size)
 Устанавливает размер буфера потокового чтения Подробнее...
 
int threadedReadBufferSize () const
 Возвращает размер буфера потокового чтения
 
const uchar * threadedReadBuffer () const
 Возвращает содержимое буфера потокового чтения
 
void * threadedReadData () const
 Возвращает произвольный указатель, который будет передан в callback потокового чтения
 
bool isThreadedRead () const
 Возвращает запущен ли поток чтения
 
bool isThreadedReadStopping () const
 Возвращает останавливается ли поток чтения
 
void startThreadedRead ()
 Запускает потоковое чтение
 
void startThreadedRead (ReadRetFunc func)
 Запускает потоковое чтение и устанавливает callback потокового чтения в "func".
 
void stopThreadedRead ()
 Останавливает потоковое чтение.
 
void terminateThreadedRead ()
 Прерывает потоковое чтение. Подробнее...
 
bool waitThreadedReadFinished (PISystemTime timeout={})
 Ожидает завершения потокового чтения в течении не более "timeout".
 
bool isThreadedWrite () const
 Возвращает запущен ли поток записи
 
void startThreadedWrite ()
 Запускает потоковую запись
 
void stopThreadedWrite ()
 Останавливает потоковую запись.
 
void terminateThreadedWrite ()
 Прерывает потоковую запись. Подробнее...
 
bool waitThreadedWriteFinished (PISystemTime timeout={})
 Ожидает завершения потоковой записи в течении не более "timeout".
 
void clearThreadedWriteQueue ()
 Очищает очередь потоковой записи
 
void start ()
 Запускает потоковое чтение и запись
 
void stop ()
 Останавливает потоковое чтение и запись.
 
void stopAndWait (PISystemTime timeout={})
 Останавливает потоковое чтение и запись и ожидает завершения.
 
virtual void interrupt ()
 Прерывает блокирующую операцию.
 
ssize_t read (void *read_to, ssize_t max_size)
 Читает из устройства не более "max_size" байт в "read_to".
 
ssize_t read (PIMemoryBlock mb)
 Читает из устройства в блок памяти "mb".
 
PIByteArray read (ssize_t max_size)
 Читает из устройства не более "max_size" байт и возвращает данные как PIByteArray.
 
virtual ssize_t bytesAvailable () const
 Возвращает количество байт доступных для чтения Подробнее...
 
ssize_t write (const void *data, ssize_t max_size)
 Пишет в устройство не более "max_size" байт из "data".
 
PIByteArray readForTime (PISystemTime timeout)
 Читает из устройства в течении "timeout" и возвращает данные как PIByteArray.
 
ullong writeThreaded (const void *data, ssize_t max_size)
 Добавляет данные в очередь на потоковую запись и возвращает ID задания
 
ullong writeThreaded (const PIByteArray &data)
 Добавляет данные в очередь на потоковую запись и возвращает ID задания
 
virtual PIConstChars fullPathPrefix () const
 Возвращает префикс устройства. Creating devices by unambiguous string.
 
PIString constructFullPath () const
 Возвращает строку полного описания для этого устройства, fullPathPrefix() + "://" + ...
 
void configureFromFullPath (const PIString &full_path)
 Настраивает устройство из параметров строки полного описания
 
PIVariantTypes::IODevice constructVariant () const
 Возвращает PIVariantTypes::IODevice, описывающий это устройство
 
void configureFromVariant (const PIVariantTypes::IODevice &d)
 Настраивает устройство из PIVariantTypes::IODevice.
 
ssize_t write (const PIMemoryBlock &mb)
 Пишет в устройство блок памяти "mb".
 
bool open ()
 Открывает устройство
 
bool open (const PIString &_path)
 Открывает устройство с путём "path".
 
bool close ()
 Закрывает устройство
 
ssize_t write (PIByteArray data)
 Пишет "data" в устройство
 
virtual void flush ()
 Немедленно записать все буферизированные данные
 
void opened ()
 Вызывается при успешном открытии
 
void closed ()
 Вызывается при успешном закрытии
 
void threadedReadEvent (const uchar *readed, ssize_t size)
 Вызывается при успешном потоковом чтении данных
 
void threadedWriteEvent (ullong id, ssize_t written_size)
 Вызывается при успешной потоковой записи данных с ID задания "id".
 
- Открытые члены унаследованные от PIObject
 PIObject (const PIString &name=PIString())
 Создает PIObject с именем "name".
 
PIString name () const
 Возвращает имя объекта
 
virtual const char * className () const
 Возвращает имя класса объекта
 
virtual const char * parentClassName () const
 Возвращает имя родительского класса
 
bool debug () const
 Возвращает включен ли вывод piCoutObj для этого объекта
 
void setName (const PIString &name)
 Устанавливает имя объекта
 
void setDebug (bool debug)
 Включает или отключает вывод piCoutObj для этого объекта
 
PIVariant property (const char *name) const
 Возвращает свойство объекта по имени "name".
 
void setProperty (const char *name, const PIVariant &value)
 Устанавливает у объекта свойство по имени "name" в "value". Если такого свойства нет, оно добавляется
 
bool isPropertyExists (const char *name) const
 Возвращает присутствует ли свойство по имени "name".
 
PIStringList scopeList () const
 Возвращает цепочку наследования объекта (вместе с классом самого объекта)
 
void piDisconnect (const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает все соединения от события "sig" к объекту "dest" и обработчику "ev_h".
 
void piDisconnect (const PIString &sig, PIObject *dest)
 Разрывает все соединения от события "sig" к объекту "dest".
 
void piDisconnect (const PIString &sig)
 Разрывает все соединения от события "sig".
 
bool isPIObject () const
 Возвращает действительный ли это PIObject (проверяет подпись)
 
template<typename T >
bool isTypeOf () const
 Возвращает действительный ли это наследник PIObject типа "T" (проверяет подпись и имя класса)
 
template<typename T >
T * cast () const
 Возвращает преобразование к типу T если это действительный наследник типа "T" (проверяет через isTypeOf()), или "nullptr".
 
void callQueuedEvents ()
 Выполнить все отложенные события от CONNECTU_QUEUED соединений
 
bool maybeCallQueuedEvents ()
 Если было хотя бы одно CONNECTU_QUEUED соединение с исполнителем this, то выполнить события Подробнее...
 
void deleteLater ()
 Пометить объект на удаление Подробнее...
 
void deleted (PIObject *o)
 Вызывается перед удалением объекта Подробнее...
 

Открытые статические члены

static InterfaceList interfaces ()
 Returns all system network interfaces.
 
static PIVector< PINetworkAddressallAddresses ()
 Returns all system network IP addresses.
 
- Открытые статические члены унаследованные от PIIODevice
static PIIODevicecreateFromFullPath (const PIString &full_path)
 Пытается создать новое устройство по префиксу, настраивает с помощью configureFromFullPath() и возвращает его Подробнее...
 
static PIIODevicecreateFromVariant (const PIVariantTypes::IODevice &d)
 Пытается создать новое устройство по префиксу, настраивает с помощью configureFromVariant() и возвращает его
 
static PIStringList availablePrefixes ()
 Возвращает префиксы всех зарегистрированных устройств
 
static PIStringList availableClasses ()
 Возвращает имена классов всех зарегистрированных устройств
 
- Открытые статические члены унаследованные от PIObject
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h)
 Разрывает все соединения от события "sig" объекта "src" к объекту "dest" и обработчику "ev_h".
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest)
 Разрывает все соединения от события "sig" объекта "src" к объекту "dest".
 
static void piDisconnect (PIObject *src, const PIString &sig)
 Разрывает все соединения от события "sig" объекта "src".
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 
static bool isPIObject (const PIObject *o)
 Возвращает действительный ли "o" PIObject (проверяет подпись)
 
template<typename T >
static bool isTypeOf (const PIObject *o)
 Возвращает действительный ли "o" наследник PIObject типа "T" (проверяет подпись и имя класса)
 

Защищенные члены

void propertyChanged (const char *name) override
 Виртуальная функция, вызывается после изменения любого свойства.
 
PIString constructFullPathDevice () const override
 Переопределите для создания строки полного описания устройства. По умолчанию возвращает path()
 
void configureFromFullPathDevice (const PIString &full_path) override
 Переопределите для настройки устройства из строки полного описания. По умолчанию вызывает setPath()
 
PIPropertyStorage constructVariantDevice () const override
 Переопределите для создания свойств устройства. По умолчанию возвращает PIPropertyStorage со свойством "path".
 
void configureFromVariantDevice (const PIPropertyStorage &d) override
 Переопределите для настройки устройства из PIPropertyStorage. Опции и режим уже применены. По умолчанию устанавливает свойство "path".
 
ssize_t readDevice (void *read_to, ssize_t max_size) override
 Переопределите для чтения данных из устройства
 
ssize_t writeDevice (const void *data, ssize_t max_size) override
 Переопределите для записи данных в устройство
 
DeviceInfoFlags deviceInfoFlags () const override
 Переопределите для возврата правильных DeviceInfoFlags. По умолчанию возвращает 0.
 
virtual void received (const void *data, int size)
 Executes when any read function was successful. Default implementation does nothing.
 
bool openDevice () override
 Переопределите для открытия устройства, возвращаемое значение будет установлено в переменную "opened_". Не используйте напрямую, только через open()!
 
bool closeDevice () override
 Переопределите для закрытия устройства, обратное возвращаемое значение будет установлено в переменную "opened_".
 
- Защищенные члены унаследованные от PIIODevice
virtual bool openDevice ()=0
 Переопределите для открытия устройства, возвращаемое значение будет установлено в переменную "opened_". Не используйте напрямую, только через open()!
 
virtual bool closeDevice ()
 Переопределите для закрытия устройства, обратное возвращаемое значение будет установлено в переменную "opened_".
 
virtual ssize_t readDevice (void *read_to, ssize_t max_size)
 Переопределите для чтения данных из устройства
 
virtual ssize_t writeDevice (const void *data, ssize_t max_size)
 Переопределите для записи данных в устройство
 
virtual bool threadedRead (const uchar *readed, ssize_t size)
 Метод вызывается после каждого успешного потокового чтения, по умолчанию вызывает callback "ret_func_".
 
virtual PIString constructFullPathDevice () const
 Переопределите для создания строки полного описания устройства. По умолчанию возвращает path()
 
virtual void configureFromFullPathDevice (const PIString &full_path)
 Переопределите для настройки устройства из строки полного описания. По умолчанию вызывает setPath()
 
virtual PIPropertyStorage constructVariantDevice () const
 Переопределите для создания свойств устройства. По умолчанию возвращает PIPropertyStorage со свойством "path".
 
virtual void configureFromVariantDevice (const PIPropertyStorage &d)
 Переопределите для настройки устройства из PIPropertyStorage. Опции и режим уже применены. По умолчанию устанавливает свойство "path".
 
virtual void optionsChanged ()
 Переопределите для применения новых опций устройства
 
virtual DeviceInfoFlags deviceInfoFlags () const
 Переопределите для возврата правильных DeviceInfoFlags. По умолчанию возвращает 0.
 
virtual void threadedReadBufferSizeChanged ()
 Переопределите для применения нового threadedReadBufferSize()
 
- Защищенные члены унаследованные от PIObject
PIObjectemitter () const
 Возвращает PIObject* который вызвал это событие. Значение допустимо только из методов обработчиков событий
 
virtual void propertyChanged (const char *name)
 Виртуальная функция, вызывается после изменения любого свойства.
 

Configurable parameters

string ip
 read ip, default ""
 
int port
 read port, default 0
 
int parameters
 ethernet parameters
 
PISystemTime readTimeout
 read timeout, default 10 s
 
PISystemTime writeTimeout
 write timeout, default 10 s
 
int TTL
 time-to-live, default 64
 
int multicastTTL
 time-to-live for multicast, default 1
 

Events

void newConnection (PIEthernet *client)
 Raise on new TCP connection received.
 
void connected ()
 Raise if succesfull TCP connection.
 
void disconnected (bool withError)
 Raise if TCP connection was closed.
 

Дополнительные унаследованные члены

- Открытые атрибуты унаследованные от PIIODevice
bool reopenEnabled
 setReopenEnabled, по умолчанию "true"
 
int reopenTimeout
 setReopenTimeout, по умолчанию 1_s
 
int threadedReadBufferSize
 setThreadedReadBufferSize в байтах, по умолчанию 4096
 

Подробное описание

Ethernet device.

Synopsis

PIEthernet designed to work with IPv4 network via two protocols: UDP and TCP. This class allow you send and receive packets to/from another computer through network. Also it supports broadcast and multicast extensions.

IPv4

UDP

User Datagram Protocol

TCP

Transmission Control Protocol

Перечисления

◆ Type

Type of PIEthernet.

Элементы перечислений
UDP 

UDP - User Datagram Protocol

TCP_Client 

TCP client - allow connection to TCP server

TCP_Server 

TCP server - receive connections from TCP clients

◆ Parameters

Parameters of PIEthernet.

Элементы перечислений
ReuseAddress 

Rebind address if there is already binded. Enabled by default

Broadcast 

Broadcast send. Disabled by default

SeparateSockets 

If this parameter is set, PIEthernet will initialize two different sockets, for receive and send, instead of single one. Disabled by default

MulticastLoop 

Enable receiving multicast packets from same host. Enabled by default

KeepConnection 

Automatic reconnect TCP connection on disconnect. Enabled by default

DisonnectOnTimeout 

Disconnect TCP connection on read timeout expired. Disabled by default

NoDelay 

Use NO_DELAY option. Disabled by default

◆ InterfaceFlag

Flags of network interface.

Элементы перечислений
ifActive 

Is active

ifRunning 

Is running

ifBroadcast 

Support broadcast

ifMulticast 

Support multicast

ifLoopback 

Is loopback

ifPTP 

Is point-to-point