PIP 5.6.1
Platform-Independent Primitives
Public Member Functions | Protected Member Functions | List of all members
PISharedMemory Class Reference

Shared memory. More...

#include <pisharedmemory.h>

Inheritance diagram for PISharedMemory:
Inheritance graph
[legend]

Public Member Functions

 PISharedMemory ()
 Constructs empty PISharedMemory. More...
 
 PISharedMemory (const PIString &shm_name, int size, DeviceMode mode=ReadWrite)
 Constructs a shared memory object with name "shm_name", size "size" and open mode "mode". More...
 
virtual ~PISharedMemory ()
 Destructor. More...
 
PIByteArray readAll ()
 Reads all shared memory content and returns it as byte array. More...
 
llong size () const
 Returns shared memory size. More...
 
void setSize (llong s)
 Sets shared memory size. More...
 
bool isEmpty () const
 Returns if shared memory object is empty (by size). More...
 
int read (void *read_to, int max_size)
 Reads from shared memory to "read_to" no more than "max_size" and returns read bytes count. More...
 
int read (void *read_to, int max_size, int offset)
 Reads from shared memory starting from "offset" to "read_to" no more than "max_size" and returns read bytes count. More...
 
int write (const void *data, int max_size)
 Writes to shared memory "data" with size "max_size" and returns written bytes count. More...
 
int write (const void *data, int max_size, int offset)
 Writes to shared memory starting from "offset" "data" with size "max_size" and returns written bytes count. More...
 
int write (const PIByteArray &data)
 Writes "data" to shared memory. More...
 
int write (const PIByteArray &data, int offset)
 Writes "data" to shared memory starting from "offset". More...
 
- 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...
 

Protected Member Functions

bool openDevice () override
 Opens the shared memory device. More...
 
bool closeDevice () override
 Closes the shared memory device. More...
 
PIString constructFullPathDevice () const override
 Constructs the full path device string. More...
 
void configureFromFullPathDevice (const PIString &full_path) override
 Configures the device from the full path string. More...
 
PIPropertyStorage constructVariantDevice () const override
 Constructs a variant device representation. More...
 
void configureFromVariantDevice (const PIPropertyStorage &d) override
 Configures the device from a variant representation. More...
 
ssize_t readDevice (void *read_to, ssize_t max_size) override
 Reads from the device. More...
 
ssize_t writeDevice (const void *data, ssize_t max_size) override
 Writes to the device. More...
 
DeviceInfoFlags deviceInfoFlags () const override
 Returns device information flags. More...
 
- 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().
 

Additional Inherited Members

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

Shared memory.

Shared memory is used as a single data storage accessible to various processes by name. At the first opening of the shared memory object, size() bytes are allocated, by default 64 KiB. All processes must use the same size() to avoid errors.

The shared memory object has no read/write position, each call to read() or write() accesses the beginning of memory. For working with a specific memory area, overloaded methods with "offset" indication are used.

Constructor & Destructor Documentation

◆ PISharedMemory() [1/2]

PISharedMemory::PISharedMemory ( )
explicit

Constructs empty PISharedMemory.

Constructs an empty shared memory object with default size 64 KiB.

◆ PISharedMemory() [2/2]

PISharedMemory::PISharedMemory ( const PIString shm_name,
int  size,
DeviceMode  mode = ReadWrite 
)
explicit

Constructs a shared memory object with name "shm_name", size "size" and open mode "mode".

Constructs a shared memory object with the specified name, size, and open mode. If "shm_name" is not empty, the object is automatically opened.

◆ ~PISharedMemory()

PISharedMemory::~PISharedMemory ( )
virtual

Destructor.

Stops and closes the shared memory object.

Member Function Documentation

◆ readAll()

PIByteArray PISharedMemory::readAll ( )

Reads all shared memory content and returns it as byte array.

Reads the entire shared memory and returns it as a PIByteArray. Returns empty array if size is less than or equal to zero.

◆ size()

llong PISharedMemory::size ( ) const

Returns shared memory size.

Returns the size of the shared memory in bytes. Returns -1 if the device is closed.

◆ setSize()

void PISharedMemory::setSize ( llong  s)

Sets shared memory size.

Sets the size of the shared memory. If the device is open, it will be closed and reopened with the new size.

Note
The size is rounded up to the nearest page size on some systems.

◆ isEmpty()

bool PISharedMemory::isEmpty ( ) const
inline

Returns if shared memory object is empty (by size).

Returns true if the shared memory size is less than or equal to zero.

◆ read() [1/2]

int PISharedMemory::read ( void *  read_to,
int  max_size 
)

Reads from shared memory to "read_to" no more than "max_size" and returns read bytes count.

Reads from the beginning of shared memory (offset 0) to the buffer "read_to" no more than "max_size" bytes.

Returns
Number of bytes read, or -1 on error.
See also
read(void *read_to, int max_size, int offset)

◆ read() [2/2]

int PISharedMemory::read ( void *  read_to,
int  max_size,
int  offset 
)

Reads from shared memory starting from "offset" to "read_to" no more than "max_size" and returns read bytes count.

Reads from the shared memory starting at the specified "offset" to the buffer "read_to" no more than "max_size" bytes.

Returns
Number of bytes read, or -1 on error.

◆ write() [1/4]

int PISharedMemory::write ( const void *  data,
int  max_size 
)

Writes to shared memory "data" with size "max_size" and returns written bytes count.

Writes to the beginning of shared memory (offset 0) from the buffer "data" no more than "max_size" bytes.

Returns
Number of bytes written, or -1 on error.
See also
write(const void *data, int max_size, int offset)

◆ write() [2/4]

int PISharedMemory::write ( const void *  data,
int  max_size,
int  offset 
)

Writes to shared memory starting from "offset" "data" with size "max_size" and returns written bytes count.

Writes to the shared memory starting at the specified "offset" from the buffer "data" no more than "max_size" bytes.

Returns
Number of bytes written, or -1 on error.

◆ write() [3/4]

int PISharedMemory::write ( const PIByteArray data)
inline

Writes "data" to shared memory.

Writes the entire PIByteArray "data" to the beginning of shared memory (offset 0).

Returns
Number of bytes written, or -1 on error.
See also
write(const void *data, int max_size)

◆ write() [4/4]

int PISharedMemory::write ( const PIByteArray data,
int  offset 
)
inline

Writes "data" to shared memory starting from "offset".

Writes the entire PIByteArray "data" to the shared memory starting at the specified "offset".

Returns
Number of bytes written, or -1 on error.
See also
write(const void *data, int max_size, int offset)

◆ openDevice()

bool PISharedMemory::openDevice ( )
overrideprotectedvirtual

Opens the shared memory device.

Creates or opens the shared memory object depending on the system (POSIX or Windows).

Returns
True on success, false otherwise.

Implements PIIODevice.

◆ closeDevice()

bool PISharedMemory::closeDevice ( )
overrideprotectedvirtual

Closes the shared memory device.

Closes the shared memory object and releases resources.

Returns
True on success, false otherwise.

Reimplemented from PIIODevice.

◆ constructFullPathDevice()

PIString PISharedMemory::constructFullPathDevice ( ) const
overrideprotectedvirtual

Constructs the full path device string.

Constructs a string in the format "path:size" representing the full path to the shared memory.

Returns
The full path device string.

Reimplemented from PIIODevice.

◆ configureFromFullPathDevice()

void PISharedMemory::configureFromFullPathDevice ( const PIString full_path)
overrideprotectedvirtual

Configures the device from the full path string.

Parses the full path string in the format "path:size" and configures the device.

Parameters
full_pathThe full path string to parse.

Reimplemented from PIIODevice.

◆ constructVariantDevice()

PIPropertyStorage PISharedMemory::constructVariantDevice ( ) const
overrideprotectedvirtual

Constructs a variant device representation.

Constructs a PIPropertyStorage with "path" and "size" properties representing the device state.

Returns
The property storage representing the device.

Reimplemented from PIIODevice.

◆ configureFromVariantDevice()

void PISharedMemory::configureFromVariantDevice ( const PIPropertyStorage d)
overrideprotectedvirtual

Configures the device from a variant representation.

Configures the device from a PIPropertyStorage containing "path" and "size" properties.

Parameters
dThe property storage to configure from.

Reimplemented from PIIODevice.

◆ readDevice()

ssize_t PISharedMemory::readDevice ( void *  read_to,
ssize_t  max_size 
)
inlineoverrideprotectedvirtual

Reads from the device.

Calls read() with offset 0.

Returns
Number of bytes read.

Reimplemented from PIIODevice.

◆ writeDevice()

ssize_t PISharedMemory::writeDevice ( const void *  data,
ssize_t  max_size 
)
inlineoverrideprotectedvirtual

Writes to the device.

Calls write() with offset 0.

Returns
Number of bytes written.

Reimplemented from PIIODevice.

◆ deviceInfoFlags()

DeviceInfoFlags PISharedMemory::deviceInfoFlags ( ) const
inlineoverrideprotectedvirtual

Returns device information flags.

Returns the Reliable flag indicating that the device operates reliably.

Returns
The device information flags.

Reimplemented from PIIODevice.