PIP 5.6.1
Platform-Independent Primitives
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
PIEthernet Class Reference

PIIODevice implementation for UDP sockets, TCP clients and TCP servers. More...

#include <piethernet.h>

Inheritance diagram for PIEthernet:
Inheritance graph
[legend]

Classes

struct  Interface
 Public descriptor of a system network interface. More...
 
class  InterfaceList
 Collection of Interface descriptors with lookup helpers. More...
 

Public Types

enum  Type { UDP , TCP_Client , TCP_Server }
 Operating mode of PIEthernet. More...
 
enum  Parameters
 Extra socket parameters for PIEthernet.
 
enum  InterfaceFlag
 Flags describing a network interface.
 
typedef ::PINetworkAddress Address DEPRECATEDM("use PINetworkAddress instead")
 Deprecated alias for PINetworkAddress.
 
typedef PIFlags< InterfaceFlagInterfaceFlags
 Bitmask of InterfaceFlag values.
 
- Public Types inherited from PIIODevice
enum  DeviceMode { ReadOnly = 0x01 , WriteOnly = 0x02 , ReadWrite = 0x03 }
 Open modes for PIIODevice. More...
 
enum  DeviceOption { BlockingRead = 0x01 , BlockingWrite = 0x02 }
 Generic options supported by some devices. More...
 
enum  DeviceInfoFlag { Sequential = 0x01 , Reliable = 0x02 }
 Characteristics of the device channel. More...
 
typedef PIFlags< DeviceOptionDeviceOptions
 Bitmask of DeviceOption values.
 
typedef PIFlags< DeviceInfoFlagDeviceInfoFlags
 Bitmask of DeviceInfoFlag values.
 

Public Member Functions

 PIEthernet ()
 Constructs a UDP device with an empty read address.
 
 PIEthernet (Type type, const PIString &ip_port=PIString(), const PIFlags< Parameters > params=PIEthernet::ReuseAddress|PIEthernet::MulticastLoop|PIEthernet::KeepConnection)
 Constructs a device with mode "type", read address "ip_port" and socket "params".
 
virtual ~PIEthernet ()
 Destroys the ethernet device.
 
void setReadAddress (const PIString &ip, int port)
 Sets the read address from IP and port.
 
void setReadAddress (const PIString &ip_port)
 Sets the read address from string "i.i.i.i:p".
 
void setReadAddress (const PINetworkAddress &addr)
 Sets the read address from PINetworkAddress.
 
void setReadIP (const PIString &ip)
 Sets only the read IP.
 
void setReadPort (int port)
 Sets only the read port.
 
void setSendAddress (const PIString &ip, int port)
 Sets the send address from IP and port.
 
void setSendAddress (const PIString &ip_port)
 Sets the send address from string "i.i.i.i:p".
 
void setSendAddress (const PINetworkAddress &addr)
 Sets the send address from PINetworkAddress.
 
void setSendIP (const PIString &ip)
 Sets only the send IP.
 
void setSendPort (int port)
 Sets only the send port.
 
PINetworkAddress readAddress () const
 Returns the current read address.
 
PIString readIP () const
 Returns the current read IP.
 
int readPort () const
 Returns the current read port.
 
PINetworkAddress sendAddress () const
 Returns the current send address.
 
PIString sendIP () const
 Returns the current send IP.
 
int sendPort () const
 Returns the current send port.
 
PINetworkAddress lastReadAddress () const
 Returns the source address of the last received UDP packet.
 
PIString lastReadIP () const
 Returns the IP of the last received UDP packet.
 
int lastReadPort () const
 Returns the port of the last received UDP packet.
 
void setParameters (PIFlags< PIEthernet::Parameters > parameters_)
 Replaces all socket parameters with "parameters_". Some parameters may require reopening the device to take full effect.
 
void setParameter (PIEthernet::Parameters parameter, bool on=true)
 Sets socket parameter "parameter" to state "on". Some parameters may require reopening the device to take full effect.
 
bool isParameterSet (PIEthernet::Parameters parameter) const
 Returns whether parameter "parameter" is enabled.
 
PIFlags< PIEthernet::Parametersparameters () const
 Returns current socket parameters.
 
Type type () const
 Returns the current ethernet mode.
 
PISystemTime readTimeout () const
 Returns the configured read timeout.
 
PISystemTime writeTimeout () const
 Returns the configured write timeout.
 
void setReadTimeout (PISystemTime tm)
 Sets the read timeout.
 
void setWriteTimeout (PISystemTime tm)
 Sets the write timeout.
 
void setReadBufferSize (int bytes)
 Sets the socket receive buffer size in bytes.
 
void setWriteBufferSize (int bytes)
 Sets the socket send buffer size in bytes.
 
int TTL () const
 Returns the IP packet TTL.
 
int multicastTTL () const
 Returns the multicast TTL.
 
void setTTL (int ttl)
 Sets the IP packet TTL, default is 64.
 
void setMulticastTTL (int ttl)
 Sets the multicast TTL, default is 1.
 
bool joinMulticastGroup (const PIString &group)
 Joins multicast group "group". Use only with UDP.
 
bool leaveMulticastGroup (const PIString &group)
 Leaves multicast group "group". Use only with UDP.
 
const PIStringListmulticastGroups () const
 Returns joined multicast groups. Use only with UDP.
 
bool connect (bool threaded=true)
 Connects to the TCP server at readAddress(). More...
 
bool connect (const PIString &ip, int port, bool threaded=true)
 Connects to the TCP server at "ip":"port".
 
bool connect (const PIString &ip_port, bool threaded=true)
 Connects to the TCP server at "ip_port".
 
bool connect (const PINetworkAddress &addr, bool threaded=true)
 Connects to the TCP server at "addr". Use only for TCP_Client.
 
bool isConnected () const
 Returns whether the TCP client is connected. Use only for TCP_Client.
 
bool isConnecting () const
 Returns whether the TCP client is currently connecting. Use only for TCP_Client.
 
bool listen (bool threaded=false)
 Starts listen for incoming TCP connections on address readAddress(). Use only for TCP_Server.
 
bool listen (const PIString &ip, int port, bool threaded=false)
 Starts listen for incoming TCP connections on address "ip":"port". Use only for TCP_Server.
 
bool listen (const PIString &ip_port, bool threaded=false)
 Starts listen for incoming TCP connections on address "ip_port". Use only for TCP_Server.
 
bool listen (const PINetworkAddress &addr, bool threaded=false)
 Starts listen for incoming TCP connections on address "addr". Use only for TCP_Server.
 
void stopThreadedListen ()
 Stops the background listen loop started with threaded listening.
 
PIEthernetclient (int index)
 Returns accepted TCP client by index.
 
int clientsCount () const
 Returns the number of accepted TCP clients.
 
PIVector< PIEthernet * > clients () const
 Returns all accepted TCP clients.
 
bool send (const void *data, int size, bool threaded=false)
 Sends raw buffer "data" of size "size". More...
 
bool send (const PIString &ip, int port, const void *data, int size, bool threaded=false)
 Sends raw buffer "data" to address "ip":"port".
 
bool send (const PIString &ip_port, const void *data, int size, bool threaded=false)
 Sends raw buffer "data" to address "ip_port".
 
bool send (const PINetworkAddress &addr, const void *data, int size, bool threaded=false)
 Sends raw buffer "data" to address "addr".
 
bool send (const PIByteArray &data, bool threaded=false)
 Sends byte array "data" using the default destination.
 
bool send (const PIString &ip, int port, const PIByteArray &data, bool threaded=false)
 Sends byte array "data" to address "ip":"port".
 
bool send (const PIString &ip_port, const PIByteArray &data, bool threaded=false)
 Sends byte array "data" to address "ip_port".
 
bool send (const PINetworkAddress &addr, const PIByteArray &data, bool threaded=false)
 Sends byte array "data" to address "addr".
 
bool canWrite () const override
 Returns whether writing is currently allowed.
 
void interrupt () override
 Interrupts a blocking socket operation.
 
int socket () const
 Returns the underlying native socket descriptor.
 
- Public Member Functions inherited from PIIODevice
 PIIODevice ()
 Constructs an empty PIIODevice.
 
 PIIODevice (const PIString &path, DeviceMode mode=ReadWrite)
 Constructs PIIODevice with path "path" and open mode "mode".
 
virtual ~PIIODevice ()
 Destroys the device base object.
 
DeviceMode mode () const
 Returns current open mode.
 
void setMode (DeviceMode m)
 Sets open mode without reopening the device.
 
DeviceOptions options () const
 Returns current device options.
 
bool isOptionSet (DeviceOption o) const
 Returns whether option "o" is enabled.
 
void setOptions (DeviceOptions o)
 Replaces all current device options with "o".
 
bool setOption (DeviceOption o, bool yes=true)
 Sets option "o" to "yes" and returns its previous state.
 
DeviceInfoFlags infoFlags () const
 Returns device channel characteristics.
 
PIString path () const
 Returns current device path.
 
void setPath (const PIString &path)
 Sets device path without reopening the device.
 
bool isReadable () const
 Returns whether the current mode allows reading.
 
bool isWriteable () const
 Returns whether the current mode allows writing.
 
bool isOpened () const
 Returns whether the device is currently opened.
 
bool isClosed () const
 Returns whether the device is currently closed.
 
virtual bool canRead () const
 Returns whether reading is possible right now.
 
virtual bool canWrite () const
 Returns whether writing is possible right now.
 
void setReopenEnabled (bool yes=true)
 Enables or disables automatic reopen attempts during threaded read.
 
void setReopenTimeout (PISystemTime timeout)
 Sets delay between automatic reopen attempts.
 
bool isReopenEnabled () const
 Returns whether automatic reopen is enabled.
 
PISystemTime reopenTimeout ()
 Returns delay between automatic reopen attempts.
 
void setThreadedReadSlot (ReadRetFunc func)
 Sets callback invoked after successful threaded reads. More...
 
void setThreadedReadData (void *d)
 Sets custom user data passed to threaded read callback.
 
void setThreadedReadBufferSize (int new_size)
 Sets background read buffer size in bytes. More...
 
int threadedReadBufferSize () const
 Returns background read buffer size in bytes.
 
const uchar * threadedReadBuffer () const
 Returns pointer to the internal threaded-read buffer.
 
void * threadedReadData () const
 Returns custom data passed to threaded read callback.
 
bool isThreadedRead () const
 Returns whether threaded read is running.
 
bool isThreadedReadStopping () const
 Returns whether threaded read is stopping.
 
void startThreadedRead ()
 Starts threaded read.
 
void startThreadedRead (ReadRetFunc func)
 Sets threaded read callback to "func" and starts threaded read.
 
void stopThreadedRead ()
 Requests threaded read stop.
 
void terminateThreadedRead ()
 Terminate threaded read. More...
 
bool waitThreadedReadFinished (PISystemTime timeout={})
 Waits until threaded read finishes or "timeout" expires.
 
uint threadedReadTimeout () const
 Returns delay between unsuccessful threaded read attempts in milliseconds.
 
void setThreadedReadTimeout (uint ms)
 Sets delay between unsuccessful threaded read attempts in milliseconds.
 
bool isThreadedWrite () const
 Returns whether threaded write is running.
 
void startThreadedWrite ()
 Starts threaded write.
 
void stopThreadedWrite ()
 Requests threaded write stop.
 
void terminateThreadedWrite ()
 Terminate threaded write. More...
 
bool waitThreadedWriteFinished (PISystemTime timeout={})
 Waits until threaded write finishes or "timeout" expires.
 
void clearThreadedWriteQueue ()
 Clears queued threaded-write tasks.
 
void start ()
 Starts both threaded read and threaded write.
 
void stop ()
 Requests stop for both threaded read and threaded write.
 
void stopAndWait (PISystemTime timeout={})
 Stops both background threads and waits for completion.
 
virtual void interrupt ()
 Interrupts a blocking device operation.
 
ssize_t read (void *read_to, ssize_t max_size)
 Reads at most "max_size" bytes into "read_to".
 
ssize_t read (PIMemoryBlock mb)
 Reads data into memory block "mb".
 
PIByteArray read (ssize_t max_size)
 Reads at most "max_size" bytes and returns them as PIByteArray.
 
virtual ssize_t bytesAvailable () const
 Returns the number of bytes that are available for reading. More...
 
ssize_t write (const void *data, ssize_t max_size)
 Writes at most "max_size" bytes from "data".
 
PIByteArray readForTime (PISystemTime timeout)
 Reads data for up to "timeout" and returns collected bytes.
 
ullong writeThreaded (const void *data, ssize_t max_size)
 Queues "data" for threaded write and returns task ID.
 
ullong writeThreaded (const PIByteArray &data)
 Queues byte array "data" for threaded write and returns task ID.
 
bool configure (const PIString &config_file, const PIString &section, bool parent_section=false)
 Configures the device from section "section" of file "config_file". More...
 
virtual PIConstChars fullPathPrefix () const
 Returns device prefix used in full-path notation. Creating devices by unambiguous string.
 
PIString constructFullPath () const
 Returns full-path representation of this device, fullPathPrefix() + "://" + ...
 
void configureFromFullPath (const PIString &full_path)
 Configures the device from full-path parameters.
 
PIVariantTypes::IODevice constructVariant () const
 Builds PIVariantTypes::IODevice description for this device.
 
void configureFromVariant (const PIVariantTypes::IODevice &d)
 Configures the device from PIVariantTypes::IODevice.
 
ssize_t write (const PIMemoryBlock &mb)
 Writes memory block "mb" to the device.
 
bool open ()
 Opens the device with current path and mode.
 
bool open (const PIString &_path)
 Opens the device with path "path".
 
bool open (DeviceMode _mode)
 Opens the device with mode "mode".
 
bool open (const PIString &_path, DeviceMode _mode)
 Opens the device with path "path" and mode "mode".
 
bool close ()
 Closes the device.
 
ssize_t write (PIByteArray data)
 Writes "data" to the device.
 
virtual void flush ()
 Immediately flushes device buffers.
 
void opened ()
 Raised after successful opening.
 
void closed ()
 Raised after successful closing.
 
void threadedReadEvent (const uchar *readed, ssize_t size)
 Raised after threaded read receives some data.
 
void threadedWriteEvent (ullong id, ssize_t written_size)
 Raised after threaded write processes task with ID "id".
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Constructs an object and initializes its name property.
 
virtual ~PIObject ()
 Destroys the object, raises deleted() and disconnects it from the event graph.
 
PIString name () const
 Returns the name property of this object.
 
virtual const char * className () const
 Returns the registered class name of this object.
 
virtual uint classNameID () const
 Returns the hash of className().
 
virtual const char * parentClassName () const
 Returns the registered parent class name, or an empty string for the root.
 
bool debug () const
 Returns whether piCoutObj output is enabled for this object.
 
void setName (const PIString &name)
 Sets the name property of this object.
 
void setDebug (bool debug)
 Enables or disables piCoutObj output for this object.
 
PIVariant property (const char *name) const
 Returns the property with name "name".
 
void setProperty (const char *name, const PIVariant &value)
 Sets the property "name" to "value" and creates it if needed. More...
 
bool isPropertyExists (const char *name) const
 Returns whether the property "name" exists.
 
void setThreadSafe (bool yes)
 Enables or disables the internal object mutex during handler execution. More...
 
bool isThreadSafe () const
 Returns whether the internal object mutex is enabled for handler execution.
 
bool execute (const PIString &method, const PIVector< PIVariantSimple > &vl)
 Executes a registered method or handler method by name with the supplied arguments. More...
 
bool execute (const PIString &method)
 Overload of execute() for a method without arguments.
 
bool execute (const PIString &method, const PIVariantSimple &v0)
 Overload of execute() for one argument.
 
bool execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Overload of execute() for two arguments.
 
bool execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Overload of execute() for three arguments.
 
bool execute (const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Overload of execute() for four arguments.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl)
 Queues execution of a registered method on the performer object. More...
 
bool executeQueued (PIObject *performer, const PIString &method)
 Overload of executeQueued() for a method without arguments.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0)
 Overload of executeQueued() for one argument.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Overload of executeQueued() for two arguments.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Overload of executeQueued() for three arguments.
 
bool executeQueued (PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Overload of executeQueued() for four arguments.
 
void dump (const PIString &line_prefix=PIString()) const
 Dumps object diagnostics to the project output stream.
 
PIStringList scopeList () const
 Returns the registered inheritance scope of this object, including its own class.
 
PIStringList methodsEH () const
 Returns full signatures of all registered event and handler methods for this class scope.
 
bool isMethodEHContains (const PIString &name) const
 Returns whether a registered event or handler method with this name exists.
 
PIString methodEHArguments (const PIString &name) const
 Returns the comma-separated argument type list of a registered method.
 
PIString methodEHFullFormat (const PIString &name) const
 Returns the full registered signature of a method.
 
PIString methodEHFromAddr (const void *addr) const
 Returns the registered method name for the specified entry-point address.
 
void piDisconnect (const PIString &sig, PIObject *dest, void *ev_h)
 Disconnects this source object from a specific destination handler for event "sig".
 
void piDisconnect (const PIString &sig, PIObject *dest)
 Disconnects this source object from all connections of event "sig" to destination object "dest".
 
void piDisconnect (const PIString &sig)
 Disconnects this source object from all connections of event "sig".
 
bool isPIObject () const
 Returns whether this pointer still refers to a live PIObject instance.
 
template<typename T >
bool isTypeOf () const
 Returns whether this object belongs to class "T" or one of its registered descendants.
 
template<typename T >
T * cast () const
 Returns this object cast to "T" when isTypeOf<T>() succeeds, otherwise nullptr.
 
void callQueuedEvents ()
 Executes all queued deliveries posted to this performer object.
 
bool maybeCallQueuedEvents ()
 Executes queued deliveries only when this object was used as a performer. More...
 
void deleteLater ()
 Schedules the object for deferred deletion. More...
 
void deleted (PIObject *o)
 Raised immediately before object destruction. More...
 

Static Public Member Functions

static InterfaceList interfaces ()
 Returns all detected system network interfaces.
 
static PINetworkAddress interfaceAddress (const PIString &interface_)
 Returns the address currently assigned to interface "interface_".
 
static PIVector< PINetworkAddressallAddresses ()
 Returns all detected system IP addresses.
 
static PIString macFromBytes (const PIByteArray &mac)
 Converts a MAC address byte array to text form.
 
static PIByteArray macToBytes (const PIString &mac)
 Converts a textual MAC address to bytes.
 
static PIString applyMask (const PIString &ip, const PIString &mask)
 Applies network mask "mask" to IPv4 string "ip".
 
static PINetworkAddress applyMask (const PINetworkAddress &ip, const PINetworkAddress &mask)
 Applies network mask "mask" to address "ip".
 
static PIString getBroadcast (const PIString &ip, const PIString &mask)
 Calculates broadcast address from IPv4 string and mask.
 
static PINetworkAddress getBroadcast (const PINetworkAddress &ip, const PINetworkAddress &mask)
 Calculates broadcast address from address and mask.
 
- Static Public Member Functions inherited from PIIODevice
static PIIODevicecreateFromFullPath (const PIString &full_path)
 Try to create new device by prefix, configure it with configureFromFullPath() and returns it. More...
 
static PIIODevicecreateFromVariant (const PIVariantTypes::IODevice &d)
 Try to create new device by prefix, configure it with configureFromVariant() and returns it.
 
static PIString normalizeFullPath (const PIString &full_path)
 Returns normalized full-path representation for "full_path".
 
static void splitFullPath (PIString fpwm, PIString *full_path, DeviceMode *mode=0, DeviceOptions *opts=0)
 Splits full-path string into path, mode and options.
 
static PIStringList availablePrefixes ()
 Returns fullPath prefixes of all registered devices.
 
static PIStringList availableClasses ()
 Returns class names of all registered devices.
 
- Static Public Member Functions inherited from PIObject
static bool execute (PIObject *o, const PIString &method, const PIVector< PIVariantSimple > &vl)
 Static convenience wrapper for execute().
 
static bool execute (PIObject *o, const PIString &method)
 Static overload of execute() without arguments.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0)
 Static overload of execute() for one argument.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Static overload of execute() for two arguments.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Static overload of execute() for three arguments.
 
static bool execute (PIObject *o, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Static overload of execute() for four arguments.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVector< PIVariantSimple > &vl)
 Static convenience wrapper for executeQueued().
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method)
 Static overload of executeQueued() without arguments.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0)
 Static overload of executeQueued() for one argument.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1)
 Static overload of executeQueued() for two arguments.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2)
 Static overload of executeQueued() for three arguments.
 
static bool executeQueued (PIObject *o, PIObject *performer, const PIString &method, const PIVariantSimple &v0, const PIVariantSimple &v1, const PIVariantSimple &v2, const PIVariantSimple &v3)
 Static overload of executeQueued() for four arguments.
 
static PIObject::Connection piConnect (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, void *ev_h, void *e_h, int args, const char *loc)
 Low-level direct connection helper behind the legacy CONNECT* macros.
 
static PIObject::Connection piConnectU (PIObject *src, const PIString &sig, PIObject *dest_o, void *dest, const PIString &hname, const char *loc, PIObject *performer=0)
 Low-level name-based connection helper behind CONNECTU() and CONNECTU_QUEUED().
 
static PIObject::Connection piConnectLS (PIObject *src, const PIString &sig, std::function< void()> *f, const char *loc)
 Low-level helper that connects an event to a lambda or functor wrapper.
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest, void *ev_h)
 Disconnects source object "src" from a specific destination handler for event "sig".
 
static void piDisconnect (PIObject *src, const PIString &sig, PIObject *dest)
 Disconnects source object "src" from all connections of event "sig" to destination object "dest".
 
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnects source object "src" from all connections of event "sig".
 
static void raiseEvent (PIObject *sender, const uint eventID)
 Internal event delivery helper for registered events without arguments.
 
template<typename T0 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0())
 Internal event delivery helper for registered events with one argument.
 
template<typename T0 , typename T1 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1())
 Internal event delivery helper for registered events with two arguments.
 
template<typename T0 , typename T1 , typename T2 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2())
 Internal event delivery helper for registered events with three arguments.
 
template<typename T0 , typename T1 , typename T2 , typename T3 >
static void raiseEvent (PIObject *sender, const uint eventID, const T0 &v0=T0(), const T1 &v1=T1(), const T2 &v2=T2(), const T3 &v3=T3())
 Internal event delivery helper for registered events with four arguments.
 
static PIObjectfindByName (const PIString &name)
 Returns the first live object with name "name", or nullptr.
 
static bool isPIObject (const PIObject *o)
 Returns whether "o" points to a live PIObject instance.
 
static bool isPIObject (const void *o)
 Overload of isPIObject() for an untyped pointer.
 
template<typename T >
static bool isTypeOf (const PIObject *o)
 Returns whether "o" belongs to class "T" or one of its registered descendants.
 
template<typename T >
static bool isTypeOf (const void *o)
 Overload of isTypeOf() for an untyped pointer.
 
static PIString simplifyType (const char *a, bool readable=true)
 Simplifies a C++ type spelling for registered-method metadata.
 

Protected Member Functions

void propertyChanged (const char *name) override
 Virtual method called after property "name" has been changed by setProperty().
 
PIString constructFullPathDevice () const override
 Reimplement to build device-specific part of full-path string. Default implementation returns path().
 
void configureFromFullPathDevice (const PIString &full_path) override
 Reimplement to configure the device from device-specific full-path parameters. Default implementation calls setPath().
 
PIPropertyStorage constructVariantDevice () const override
 Reimplement to build device-specific variant properties. Default implementation returns PIPropertyStorage with "path".
 
void configureFromVariantDevice (const PIPropertyStorage &d) override
 Reimplement to configure the device from PIPropertyStorage. Mode and options are already applied. Default implementation applies "path".
 
bool configureDevice (const void *e_main, const void *e_parent=0) override
 Reimplement to configure the device from "e_main" and optional "e_parent" entries cast to PIConfig::Entry*.
 
ssize_t readDevice (void *read_to, ssize_t max_size) override
 Reimplement this function to read from your device.
 
ssize_t writeDevice (const void *data, ssize_t max_size) override
 Reimplement this function to write to your device.
 
DeviceInfoFlags deviceInfoFlags () const override
 Reimplement to report actual DeviceInfoFlags. Default implementation returns 0.
 
virtual void received (const void *data, int size)
 Called after any successful receive operation. More...
 
bool openDevice () override
 Reimplement to open device, return value will be set to "opened_" variable. Don't call this function in subclass, use open()!
 
bool closeDevice () override
 Reimplement to close the device; inverse return value is stored into "opened_".
 
- Protected Member Functions inherited from PIIODevice
virtual bool configureDevice (const void *e_main, const void *e_parent=0)
 Reimplement to configure the device from "e_main" and optional "e_parent" entries cast to PIConfig::Entry*.
 
virtual bool openDevice ()=0
 Reimplement to open device, return value will be set to "opened_" variable. Don't call this function in subclass, use open()!
 
virtual bool closeDevice ()
 Reimplement to close the device; inverse return value is stored into "opened_".
 
virtual ssize_t readDevice (void *read_to, ssize_t max_size)
 Reimplement this function to read from your device.
 
virtual ssize_t writeDevice (const void *data, ssize_t max_size)
 Reimplement this function to write to your device.
 
virtual bool threadedRead (const uchar *readed, ssize_t size)
 Called after threaded read receives data; default implementation calls the external callback set by setThreadedReadSlot().
 
virtual PIString constructFullPathDevice () const
 Reimplement to build device-specific part of full-path string. Default implementation returns path().
 
virtual void configureFromFullPathDevice (const PIString &full_path)
 Reimplement to configure the device from device-specific full-path parameters. Default implementation calls setPath().
 
virtual PIPropertyStorage constructVariantDevice () const
 Reimplement to build device-specific variant properties. Default implementation returns PIPropertyStorage with "path".
 
virtual void configureFromVariantDevice (const PIPropertyStorage &d)
 Reimplement to configure the device from PIPropertyStorage. Mode and options are already applied. Default implementation applies "path".
 
virtual void optionsChanged ()
 Reimplement to react to changed device options.
 
virtual DeviceInfoFlags deviceInfoFlags () const
 Reimplement to report actual DeviceInfoFlags. Default implementation returns 0.
 
virtual void threadedReadBufferSizeChanged ()
 Reimplement to react to new threadedReadBufferSize().
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns the source object that raised the current event. More...
 
virtual void propertyChanged (const char *name)
 Virtual method called after property "name" has been changed by setProperty().
 

Configurable parameters

string ip
 Read IP address, default "".
 
int port
 Read port, default 0.
 
int parameters
 Bitmask of Parameters values.
 
PISystemTime readTimeout
 Read timeout, default 10 s.
 
PISystemTime writeTimeout
 Write timeout, default 10 s.
 
int TTL
 IP packet TTL, default 64.
 
int multicastTTL
 Multicast TTL, default 1.
 

Events

void newConnection (PIEthernet *client)
 Raised when a new TCP client connection is accepted.
 
void connected ()
 Raised after a successful TCP client connection.
 
void disconnected (bool withError)
 Raised when the TCP connection is closed.
 

Additional Inherited Members

- Public Attributes inherited from PIIODevice
bool reopenEnabled
 setReopenEnabled, default "true".
 
int reopenTimeout
 setReopenTimeout, default 1_s.
 
int threadedReadBufferSize
 setThreadedReadBufferSize in bytes, default 4096.
 

Detailed Description

PIIODevice implementation for UDP sockets, TCP clients and TCP servers.

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

Member Enumeration Documentation

◆ Type

Operating mode of PIEthernet.

Enumerator
UDP 

UDP datagram socket

TCP_Client 

TCP client socket

TCP_Server 

TCP server socket

Member Function Documentation

◆ connect()

bool PIEthernet::connect ( bool  threaded = true)

Connects to the TCP server at readAddress().

If "threaded" is true, connection is queued and completed from subsequent read() or write() calls.

◆ send()

bool PIEthernet::send ( const void *  data,
int  size,
bool  threaded = false 
)

Sends raw buffer "data" of size "size".

For UDP it uses sendAddress(), for TCP_Client it sends through the connected peer.

◆ received()

virtual void PIEthernet::received ( const void *  data,
int  size 
)
inlineprotectedvirtual

Called after any successful receive operation.

Default implementation does nothing.