PIP  1.8.0
Platform-Independent Primitives
PIBroadcast Class Reference

Broadcast for all interfaces, including loopback. More...

Inheritance diagram for PIBroadcast:

Public Types

enum  Channel { Multicast = 0x01, Broadcast = 0x02, Loopback = 0x04, All = 0xFFFF }
 PIBroadcast channels, can be used independently More...
 
- Public Types inherited from PIThread
enum  Priority {
  piLowerst, piLow, piNormal, piHigh,
  piHighest
}
 Priority of thread. More...
 

Public Member Functions

 PIBroadcast (bool send_only=false)
 
void setChannels (Channels ch)
 Set channels to "ch" and queue to reinit.
 
Channels channels () const
 Returns channels.
 
bool isSendOnly () const
 Returns if is send_only.
 
void setMulticastGroup (const PIString &mg)
 Set multicast IP to "mg" and queue to reinit.
 
PIString multicastGroup () const
 Returns multicast IP.
 
void setMulticastPort (ushort port)
 Set multicast port to "port" and queue to reinit.
 
ushort multicastPort () const
 Returns multicast port.
 
void setMulticastAddress (const PIEthernet::Address &addr)
 Set multicast address to "addr" and queue to reinit.
 
PIEthernet::Address multicastAddress () const
 Returns multicast address.
 
void setBroadcastPort (ushort port)
 Set broadcast port to "port" and queue to reinit.
 
ushort broadcastPort ()
 Returns broadcast port.
 
void setLoopbackPort (ushort port)
 Set loopback start port to "port" and queue to reinit.
 
ushort loopbackPort ()
 Returns loopback start port.
 
void setLoopbackPortsCount (int count)
 Set loopback ports count to "count" and queue to reinit.
 
int loopbackPortsCount () const
 Returns loopback ports count.
 
void startRead ()
 If not send_only starts all threaded reads.
 
void stopRead ()
 Stop all threaded reads.
 
void reinit ()
 Reinit all PIEthernets with current PIEthernet::allAddresses()
 
void send (const PIByteArray &data)
 Send packet.
 
- Public Member Functions inherited from PIThread
 PIThread (void *data, ThreadFunc func, bool startNow=false, int loop_delay=-1)
 Contructs thread with custom data "data", external function "func" and main loop delay "loop_delay".
 
 PIThread (bool startNow=false, int loop_delay=-1)
 Contructs thread with main loop delay "loop_delay".
 
void setData (void *d)
 Set common data passed to external function.
 
void setSlot (ThreadFunc func)
 Set external function that will be executed after every run()
 
void setPriority (PIThread::Priority prior)
 Set priority of thread.
 
void * data () const
 Returns common data passed to external function.
 
PIThread::Priority priority () const
 Return priority of thread.
 
bool isRunning () const
 Return true if thread is running.
 
void needLockRun (bool need)
 Set necessity of lock every run with internal mutex.
 
PIMutexmutex ()
 Returns internal mutex.
 
llong tid () const
 Returns thread ID.
 
bool start (int timer_delay)
 Start thread. More...
 
bool startOnce ()
 Start thread without internal loop. More...
 
bool startOnce (ThreadFunc func)
 Start thread without internal loop. More...
 
void stop (bool wait)
 Stop thread. More...
 
void terminate ()
 Strongly stop thread. More...
 
bool waitForStart (int timeout_msecs)
 Wait for thread start. More...
 
bool waitForFinish (int timeout_msecs)
 Wait for thread finish. More...
 
void lock ()
 Lock internal mutex.
 
void unlock ()
 Unlock internal mutex.
 
void started ()
 Raise on thread start.
 
void stopped ()
 Raise on thread stop.
 
- Public Member Functions inherited from PIObject
 PIObject (const PIString &name=PIString())
 Contructs PIObject with name "name".
 
PIString name () const
 Returns object name.
 
virtual const char * className () const
 Returns object class name.
 
virtual const char * parentClassName () const
 Returns parent object class name.
 
bool debug () const
 Return if debug of this object is active.
 
void setName (const PIString &name)
 Set object name.
 
void setDebug (bool debug)
 Set object debug active.
 
const PIMap< PIString, PIVariant > & properties () const
 Returns properties of the object.
 
int propertiesCount () const
 Returns properties count of the object.
 
PIVariant property (const PIString &name) const
 Returns property with name "name".
 
void setProperty (const PIString &name, const PIVariant &value)
 Set property with name "name" to "value". If there is no such property in object it will be added.
 
bool isPropertyExists (const PIString &name) const
 Returns if property with name "name" exists.
 
- Public Member Functions inherited from PIEthUtilBase
void setCryptEnabled (bool on)
 Set crypt layer enabled.
 
void cryptEnable ()
 Enable crypt layer.
 
void cryptDisable ()
 Disable crypt layer.
 
bool isCryptEnabled () const
 Returns if crypt layer enabled.
 
void setCryptKey (const PIByteArray &k)
 Set crypt layer key to "k".
 
void createCryptKey (const PIString &k)
 
PIByteArray cryptKey () const
 Returns crypt layer key.
 

Protected Member Functions

virtual void received (PIByteArray data)
 Called when packet received.
 
- Protected Member Functions inherited from PIThread
virtual void begin ()
 Function executed once at the start of thread.
 
virtual void end ()
 Function executed once at the end of thread.
 
- Protected Member Functions inherited from PIObject
PIObjectemitter () const
 Returns PIObject* which has raised an event. This value is correct only in definition of some event handler.
 
virtual void propertyChanged (const PIString &name)
 Virtual function executes after property with name "name" has been changed.
 
void deleted ()
 Raise before object delete. More...
 
- Protected Member Functions inherited from PIEthUtilBase
PIByteArray cryptData (const PIByteArray &data)
 Returns encrypted data if layer enabled, otherwise returns unchanged "data".
 
PIByteArray decryptData (const PIByteArray &data)
 Returns decrypted data if layer enabled, otherwise returns unchanged "data". If decryption was unsuccessfull returns empty PIByteArray.
 

Events

void receiveEvent (PIByteArray data)
 Raise on packet received.
 

Additional Inherited Members

- Static Public Member Functions inherited from PIObject
static void piDisconnect (PIObject *src, const PIString &sig)
 Disconnect object "src" from all connections with event name "sig".
 
static void piDisconnect (PIObject *src)
 Disconnect object "src" from all connections, i.e. all connections where object "src" is emitter.
 
static PIObjectfindByName (const PIString &name)
 Returns PIObject* with name "name" or 0, if there is no object found.
 

Detailed Description

Broadcast for all interfaces, including loopback.

Synopsis

PIBroadcast used as multichannel IO device. It can use multicast, broadcast and loopback ethernet channels to send/receive packets. send() function send packet to all initialized ethernets. receiveEvent() raised on packet received by any ethernet. All multi/broadcast ethernets created for all current addresses, obtained by PIEthernets::allAddresses().

PIBroadcast starts thread , which every 3 seconds check if current PIEthernet::allAddresses() was changed and call reinit() if it necessary.

Member Enumeration Documentation

◆ Channel

PIBroadcast channels, can be used independently

Enumerator
Multicast 

Use multicast addresses

Broadcast 

Use broadcast addresses

Loopback 

Use loopback addresses

All 

Use all channels

Constructor & Destructor Documentation

◆ PIBroadcast()

PIBroadcast::PIBroadcast ( bool  send_only = false)

Contructs PIBroadcast, if "send_only" not set all PIEthernets will be binded to receive data