PIP  1.8.0
Platform-Independent Primitives
PIStreamPacker Class Reference

Simple packet wrap aroud any PIIODevice. More...

Inheritance diagram for PIStreamPacker:

Public Member Functions

 PIStreamPacker (PIIODevice *dev=0)
 Contructs packer and try to assign "dev".
 
void setMaxPacketSize (int max_size)
 Set maximum size of single packet.
 
int maxPacketSize ()
 Returns maximum size of single packet, default 1400 bytes.
 
void setPacketSign (ushort sign_)
 Set packet sinature.
 
ushort packetSign ()
 Returns packet sinature, default 0xAFBE.
 
void send (const PIByteArray &data)
 Prepare data for send and raise sendRequest() events.
 
void received (const PIByteArray &data)
 Receive data part. If packet is ready, raise received() event.
 
void assignDevice (PIIODevice *dev)
 
- 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.
 

Handlers

void received (uchar *readed, int size)
 Handler to receive data. PIIODevice::threadedReadEvent() can be connected to this handler.
 

Events

void packetReceiveEvent (PIByteArray data)
 Raise on packet successfully received.
 
void sendRequest (PIByteArray data)
 Raise from send() function. This data should be directly sended to your device. You can connect this event to PIIODevice::write() handler.
 

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.
 
- 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.
 

Detailed Description

Simple packet wrap aroud any PIIODevice.

Synopsis

PIStreamPacker provides simple pack/unpack logic for any data packets.

When you call send() function data splited into several parts, packetSign() prepended to first part and sendRequest() event raised several times.

When your device receive some data, call received() function. packetReceiveEvent() event will be raised when packet will be collected.

Use assignDevice() to connect device to this PIStreamPacker.

Member Function Documentation

◆ assignDevice()

void PIStreamPacker::assignDevice ( PIIODevice dev)

Connect "dev" PIIODevice::threadedReadEvent() event to received() handler and sendRequest() event to "dev" PIIODevice::write() handler