![]() |
PIP 5.6.1
Platform-Independent Primitives
|
Extracts packets from data produced by a child PIIODevice. The PIPacketExtractor class provides packet recognition from data stream using various algorithms. More...
#include <pipacketextractor.h>

Public Types | |
| enum | SplitMode { None , Header , Footer , HeaderAndFooter , Size , Timeout } |
| Packet splitting modes. More... | |
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< DeviceOption > | DeviceOptions |
| Bitmask of DeviceOption values. | |
| typedef PIFlags< DeviceInfoFlag > | DeviceInfoFlags |
| Bitmask of DeviceInfoFlag values. | |
Public Member Functions | |
| PIPacketExtractor (PIIODevice *device_=nullptr, SplitMode mode=None) | |
| Constructs extractor bound to "device_" and configured with split mode "mode". | |
| virtual | ~PIPacketExtractor () |
| Stops extractor background activity and destroys the object. | |
| PIIODevice * | device () |
| Returns the current child device. | |
| void | setDevice (PIIODevice *device_) |
| Replaces the child device with "device_". | |
| ssize_t | bytesAvailable () const override |
| Returns unread bytes currently available from the child device. | |
| void | setHeaderCheckSlot (PacketExtractorHeaderFunc f) |
| Sets custom header validation callback. | |
| void | setPayloadCheckSlot (PacketExtractorPayloadFunc f) |
| Sets custom payload validation callback. | |
| void | setFooterCheckSlot (PacketExtractorFooterFunc f) |
| Sets custom footer validation callback. | |
| void | setSplitMode (SplitMode mode) |
| Switches packet extraction to mode "mode". | |
| void | setPayloadSize (int size) |
| Sets fixed payload size used by the size-based extraction modes. | |
| void | setHeader (const PIByteArray &data) |
| Sets reference header bytes. | |
| void | setFooter (const PIByteArray &data) |
| Sets reference footer bytes. | |
| void | setTimeout (PISystemTime tm) |
| Sets accumulation timeout for Timeout mode. | |
| SplitMode | splitMode () const |
| Returns current packet splitting mode. | |
| int | payloadSize () const |
| Returns configured payload size. | |
| PIByteArray | header () const |
| Returns configured reference header. | |
| PIByteArray | footer () const |
| Returns configured reference footer. | |
| PISystemTime | timeout () const |
| Returns timeout used by Timeout mode. | |
| ullong | missedBytes () const |
| Returns number of bytes skipped during resynchronization. | |
| void | appendData (const uchar *d, int s) |
| Feeds raw bytes into the extractor. Emits packetReceived() when a complete packet is recognized. | |
| void | appendData (const PIByteArray &data) |
| Feeds byte-array data into the extractor. Emits packetReceived() when a complete packet is recognized. | |
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 §ion, 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... | |
Protected Member Functions | |
| virtual int | validateHeader (const uchar *src, const uchar *rec, int size) |
| Validates packet header and optionally returns payload size. More... | |
| virtual bool | validateFooter (const uchar *src, const uchar *rec, int size) |
| Validates packet footer. The default implementation compares "src" and "rec" byte by byte. | |
| virtual bool | validatePayload (const uchar *rec, int size) |
| Validates packet payload. The default implementation accepts any payload. | |
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 | |
| PIObject * | emitter () 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(). | |
Events | |
| void | packetReceived (const uchar *data, int size) |
| Emitted when the current input chunk passes the configured extraction rules. | |
Additional Inherited Members | |
Static Public Member Functions inherited from PIIODevice | |
| static PIIODevice * | createFromFullPath (const PIString &full_path) |
| Try to create new device by prefix, configure it with configureFromFullPath() and returns it. More... | |
| static PIIODevice * | createFromVariant (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 PIObject * | findByName (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. | |
Public Attributes inherited from PIIODevice | |
| bool | reopenEnabled |
| setReopenEnabled, default "true". | |
| int | reopenTimeout |
| setReopenTimeout, default 1_s. | |
| int | threadedReadBufferSize |
| setThreadedReadBufferSize in bytes, default 4096. | |
Related Functions inherited from PIIODevice | |
| template<typename T > | |
| T | readDeviceSetting (const PIString &name, const T &def, const PIConfig::Entry *em, const PIConfig::Entry *ep) |
| Helper for reading device settings from configuration entries. More... | |
| #define | REGISTER_DEVICE(class) |
| Enable device instances creation with PIIODevice::createFromFullPath() function. More... | |
| #define | PIIODEVICE(class, prefix) |
| Use this macro instead of PIOBJECT when describe your own PIIODevice. More... | |
Related Functions inherited from PIObject | |
| #define | piCoutObj |
| Macro used for conditional (piDebug && PIObject::debug()) output to PICout(StdOut) for subclasses of PIObject. | |
| #define | piCerrObj |
| Macro used for conditional (piDebug && PIObject::debug()) output to PICout(StdErr) for subclasses of PIObject. | |
| #define | PIOBJECT(name) |
| Put this macro inside a direct PIObject subclass definition to enable registered events, event handlers and class metadata. | |
| #define | PIOBJECT_SUBCLASS(name, parent) |
| Put this macro inside a PIObject subclass definition to inherit registered methods and class scope from "parent". | |
| #define | EVENT_HANDLER0(ret, name) ret name() |
Declare a registered event handler method with signature ret name(). | |
| #define | EVENT_HANDLER1(ret, name, type0, var0) ret name(type0 var0) |
| Declare a registered event handler method with one argument. | |
| #define | EVENT_HANDLER2(ret, name, type0, var0, type1, var1) ret name(type0 var0, type1 var1) |
| Declare a registered event handler method with two arguments. | |
| #define | EVENT_HANDLER3(ret, name, type0, var0, type1, var1, type2, var2) ret name(type0 var0, type1 var1, type2 var2) |
| Declare a registered event handler method with three arguments. | |
| #define | EVENT_HANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Declare a registered event handler method with four arguments. | |
| #define | EVENT_HANDLER EVENT_HANDLER0 |
| Synonym of EVENT_HANDLER0. | |
| #define | EVENT_VHANDLER0(ret, name) virtual ret name() |
Declare a virtual registered event handler method with signature virtual ret name(). | |
| #define | EVENT_VHANDLER1(ret, name, type0, var0) virtual ret name(type0 var0) |
| Declare a virtual registered event handler method with one argument. | |
| #define | EVENT_VHANDLER2(ret, name, type0, var0, type1, var1) virtual ret name(type0 var0, type1 var1) |
| Declare a virtual registered event handler method with two arguments. | |
| #define | EVENT_VHANDLER3(ret, name, type0, var0, type1, var1, type2, var2) virtual ret name(type0 var0, type1 var1, type2 var2) |
| Declare a virtual registered event handler method with three arguments. | |
| #define | EVENT_VHANDLER4(ret, name, type0, var0, type1, var1, type2, var2, type3, var3) virtual ret name(type0 var0, type1 var1, type2 var2, type3 var3) |
| Declare a virtual registered event handler method with four arguments. | |
| #define | EVENT_VHANDLER EVENT_VHANDLER0 |
| Synonym of EVENT_VHANDLER0. | |
| #define | EVENT0(name) void name(); |
| Declare an event method with no arguments. | |
| #define | EVENT1(name, type0, var0) void name(type0 var0); |
| Declare an event method with one argument. | |
| #define | EVENT2(name, type0, var0, type1, var1) void name(type0 var0, type1 var1); |
| Declare an event method with two arguments. | |
| #define | EVENT3(name, type0, var0, type1, var1, type2, var2) void name(type0 var0, type1 var1, type2 var2); |
| Declare an event method with three arguments. | |
| #define | EVENT4(name, type0, var0, type1, var1, type2, var2, type3, var3) void name(type0 var0, type1 var1, type2 var2, type3 var3); |
| Declare an event method with four arguments. | |
| #define | EVENT EVENT0 |
| Synonym of EVENT0. | |
| #define | RAISE_EVENT0(src, event) |
| Compatibility helper that raises event "event" on source object "src". | |
| #define | RAISE_EVENT1(src, event, v0) |
| Compatibility helper that raises event "event" with one argument. | |
| #define | RAISE_EVENT2(src, event, v0, v1) |
| Compatibility helper that raises event "event" with two arguments. | |
| #define | RAISE_EVENT3(src, event, v0, v1, v2) |
| Compatibility helper that raises event "event" with three arguments. | |
| #define | RAISE_EVENT4(src, event, v0, v1, v2, v3) |
| Compatibility helper that raises event "event" with four arguments. | |
| #define | CONNECTU(src, event, dest, handler) |
| Connect event "event" from object "src" to event handler or event "handler" of object "dest". More... | |
| #define | CONNECTU_QUEUED(src, event, dest, handler, performer) |
| Connect event "event" from object "src" to event handler or event "handler" of object "dest". More... | |
| #define | CONNECTL(src, event, functor) |
| Connect event "event" from object "src" to lambda-expression "functor". More... | |
| #define | CONNECT0(ret, src, event, dest, handler) |
| Legacy compatibility helper that connects an event to a registered handler with compile-time signature spelling. More... | |
| #define | CONNECT1(ret, type0, src, event, dest, handler) |
| Legacy compatibility helper for a one-argument registered event or handler. More... | |
| #define | CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Legacy compatibility helper for a two-argument registered event or handler. More... | |
| #define | CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Legacy compatibility helper for a three-argument registered event or handler. More... | |
| #define | CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Legacy compatibility helper for a four-argument registered event or handler. More... | |
| #define | CONNECT CONNECT0 |
| Synonym of CONNECT0. More... | |
| #define | WEAK_CONNECT0(ret, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification. More... | |
| #define | WEAK_CONNECT1(ret, type0, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification for one argument. More... | |
| #define | WEAK_CONNECT2(ret, type0, type1, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification for two arguments. More... | |
| #define | WEAK_CONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification for three arguments. More... | |
| #define | WEAK_CONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Legacy compatibility helper that skips source method verification for four arguments. More... | |
| #define | WEAK_CONNECT WEAK_CONNECT0 |
| Synonym of WEAK_CONNECT0. More... | |
| #define | DISCONNECT0(ret, src, event, dest, handler) |
| Disconnect a registered event from a registered event handler. | |
| #define | DISCONNECT1(ret, type0, src, event, dest, handler) |
| Disconnect a one-argument registered event from a registered event handler. | |
| #define | DISCONNECT2(ret, type0, type1, src, event, dest, handler) |
| Disconnect a two-argument registered event from a registered event handler. | |
| #define | DISCONNECT3(ret, type0, type1, type2, src, event, dest, handler) |
| Disconnect a three-argument registered event from a registered event handler. | |
| #define | DISCONNECT4(ret, type0, type1, type2, type3, src, event, dest, handler) |
| Disconnect a four-argument registered event from a registered event handler. | |
| #define | DISCONNECT DISCONNECT0 |
| Synonym of DISCONNECT0. | |
| #define | HANDLER(handler) |
| Low-level helper that expands to the registered handler entry point. | |
Extracts packets from data produced by a child PIIODevice. The PIPacketExtractor class provides packet recognition from data stream using various algorithms.
Packets extractor.
This class implements packet recognition by various algorithms and custom validating from data stream. Stream is formed from child PIIODevice passed from contructor or with function setDevice().
PIPacketExtractor works with child PIIODevice. read and write functions directly call child device functions. You should start threaded read of extractor (not child device) to proper work. Extractor read data from child device, try to detect packet from readed data and raise packetReceived() event on success.
There are 6 algorithms:
There are three parameters:
Extractor can detect packet with compare your header with readed data. It is default implementation of function packetHeaderValidate(). If header validating passed, function packetValidate() will be called. If either of this function return false extractor shifts by one byte and takes next header. If both functions returns true extractor shifts by whole packet size.
Packet splitting modes.
| Enumerator | |
|---|---|
| None | Accept every read chunk as a packet |
| Header | Search for header() and use configured payload size or callback result |
| Footer | Use fixed payload size and validate trailing footer() |
| HeaderAndFooter | |
| Size | Treat payloadSize() as full packet size |
| Timeout | Collect bytes until timeout() expires after the first read |
|
protectedvirtual |
Validates packet header and optionally returns payload size.
The default implementation compares "src" and "rec" byte by byte and returns the configured payloadSize() on success.