Remoto - VFS: VFS_QRC Class Reference
Remoto - VFS

Qt resource data node. More...

#include <VFS_qrc.h>

Inheritance diagram for VFS_QRC:
VFS_node

Public Member Functions

Q_INVOKABLE VFS_QRC (QString path, bool raw=false)
 
virtual ~VFS_QRC ()
 
virtual VFS_nodefind (VFS_request *r)
 
virtual bool isContainer ()
 The VFS_QRC class is a read-only container. More...
 
virtual void ls (VFS_request *r)
 List the contents of a path in this resource. More...
 
virtual void metadata (VFS_request *r)
 Retrieve the metadata for a path. More...
 
virtual void read (VFS_request *r)
 Return the data contents of this node, or if it's a container call ls() More...
 
virtual void rm (VFS_request *r)
 Attempt to rm. More...
 
virtual void submit (VFS_request *r)
 Attempt to submit. More...
 
virtual void subscribe (VFS_request *r)
 Subscribe to a path. More...
 
virtual void write (VFS_request *r)
 Attempt to write. More...
 
- Public Member Functions inherited from VFS_node
Q_INVOKABLE VFS_node ()
 The VFS_node constructor will add its instance to the VFS_node::__allNodes global node registry, observing thread safety rules. More...
 
virtual ~VFS_node ()
 VFS_node destructor. More...
 
virtual VFS_nodeappend (QString name, VFS_node *node, bool containerCheck=true, QString user="server")
 Append a VFS_node as a child of this node. More...
 
QString className ()
 Return the class name of a node. More...
 
virtual VFS_requestcreateRequest (VFS_request::requestType type, QString path, QString user="unknown", QJsonDocument data=QJsonDocument(), QJsonObject metadata=QJsonObject(), bool dontDelete=false)
 Create a new VFS_request with this object as _origin. More...
 
VFS_nodefind (QString path)
 Find a node by string path. More...
 
VFS_nodefindChildWithName (QString name)
 Check if a child with a given name exists. More...
 
virtual VFS_nodemount ()
 Mount this node. More...
 
virtual QString reportDetails ()
 Additional details for a generated report. More...
 
QString uniqueChildName (QString name)
 Generate a unique child name. More...
 
virtual VFS_nodeunmount ()
 Unmount this node. More...
 
virtual bool validChildName (QString name)
 Check if a node name is valid. More...
 

Private Attributes

QString _path
 The Qt resource path prefix. Must start with ":/". More...
 
bool _raw
 Whether to fetch data in JSON mode or RAW mode. More...
 

Additional Inherited Members

- Public Slots inherited from VFS_node
virtual void applyDiff (VFS_request *r)
 Apply a diff received via subscription. More...
 
virtual void executeRequest (VFS_request *t)
 Based on the VFS_request::requestType, execute the function associated with an operation. More...
 
void notifySubscribers (VFS_node *origin, VFS_request *t)
 Propagate a diff to subscribers. More...
 
virtual void receiveResponse (VFS_request *t)
 Once a VFS_request has been completed, a response will be issued back to its _origin. More...
 
void remove (bool andDelete)
 Remove a child node. More...
 
virtual void remove (VFS_node *node=nullptr, QString *name=nullptr, QString user="server")
 Remove a child node from this node. More...
 
virtual void subtreeRequest (VFS_request *t)
 find() the target of a VFS_request, and execute the request More...
 
virtual void unsubscribeAll (VFS_node *n)
 Remove all references to a subscriber from this node. More...
 
- Signals inherited from VFS_node
void diff (VFS_node *origin, VFS_request *t)
 Emit a diff, which will trigger notifySubscribers() for a mounted node. More...
 
void finished (bool andDelete=false)
 Emitted if a thread fails to create its node, or a node is rm()'d, or any other reason a node has completed its lifecycle. It is deleted if andDelete==true. More...
 
void mounted ()
 Emitted when a node is mount()ed. More...
 
void unmounted (VFS_node *self)
 Emitted when a node is unmount()ed. More...
 
- Static Public Member Functions inherited from VFS_node
static bool __isNode (VFS_node *)
 Check to see if a node is in the global registry. More...
 
static QString code (QString nodename, QString libname, QString &error)
 Fetch code or any other resource from a node. More...
 
- Protected Member Functions inherited from VFS_node
virtual void aclDefaults (VFS_request *r)
 Return default values and features associated wth this node. More...
 
void addACLDefault (QJsonObject &acl, bool value, QString description="")
 Add a default value to the acl object. More...
 
void addACLFeature (QJsonObject &acl, QString feature, bool value, QString description="")
 Add a feature to the acl object. More...
 
void addACLFeatureGroup (QJsonObject &acl, QString feature, QString group, bool value)
 Add a feature group to the acl object. More...
 
void addACLFeatureUser (QJsonObject &acl, QString feature, QString user, bool value)
 Add a feature user to the acl object. More...
 
void addACLGroup (QJsonObject &acl, QString group, bool value)
 Add a group to the acl object. More...
 
void addACLUser (QJsonObject &acl, QString user, bool value)
 Add a user to the acl object. More...
 
virtual QByteArray icon ()
 Fetch the icon for a node. More...
 
virtual void issueRequest (VFS_node *target, VFS_request *t)
 Issue a VFS_request to its target. More...
 
virtual void issueRequest (VFS_request *t)
 A convenience function. More...
 
virtual void issueResponse (VFS_request *t)
 Once a request has been completed, issue a response. More...
 
virtual void releaseLock (VFS_request *r)
 Release a lock on this node. More...
 
virtual void report (VFS_request *r)
 Report debugging information about the current state of this node. More...
 
virtual void requestLock (VFS_request *r)
 Request a lock on this node. More...
 
virtual void unsubscribe (VFS_request *r)
 Remove an entry from this node's _subscription list. More...
 
virtual void unsubscribePath (QString path)
 Unsubscribe all references to a subpath. More...
 
- Protected Attributes inherited from VFS_node
VFS_children _children
 This node's children. More...
 
QMutex _lock
 A recursive mutex that is local to this node. More...
 
VFS_subscriptionType _subscribers
 This node's subscribers. These subscribers will receive diff notifications. More...
 

Detailed Description

Qt resource data node.

VFS_QRC allows files to be embedded into an executable and read or browsed as entries in the VFS. Files and Directories are read-only.

This node cannot be created in an XML config file, because generally the data in a resource path is private and used only by a plugin.

Definition at line 6 of file VFS_qrc.h.

Constructor & Destructor Documentation

◆ VFS_QRC()

VFS_QRC::VFS_QRC ( QString  path,
bool  raw = false 
)
explicit
Parameters
pathQt resource path, starting with a ":/"
rawboolean value to put the node into 'raw' mode, which will not attempt to parse the contents as JSON and will instead return the raw contents in a "data" field of the JSON response.

The resource path must exist and begin with a ":/". It must be compiled into the executable or a loaded plugin. Plugins will gain their own namespace, and can't cross this boundary using paths.

Definition at line 33 of file VFS_qrc.cpp.

◆ ~VFS_QRC()

VFS_QRC::~VFS_QRC ( )
virtual

Definition at line 44 of file VFS_qrc.cpp.

Member Function Documentation

◆ find()

VFS_node * VFS_QRC::find ( VFS_request r)
virtual
Parameters
rThe VFS_request object
Returns
VFS_node* – which is always this

Always returns this, regardless of if the path is valid. If a find request has encountered this node, the search must terminate here.

Reimplemented from VFS_node.

Definition at line 55 of file VFS_qrc.cpp.

◆ isContainer()

bool VFS_QRC::isContainer ( )
virtual

The VFS_QRC class is a read-only container.

Returns
true

Reimplemented from VFS_node.

Definition at line 277 of file VFS_qrc.cpp.

◆ ls()

void VFS_QRC::ls ( VFS_request r)
virtual

List the contents of a path in this resource.

Parameters
rThe VFS_request object

Navigate to the path in r->_path, and list the contents of a directory or file.

Reimplemented from VFS_node.

Definition at line 229 of file VFS_qrc.cpp.

◆ metadata()

void VFS_QRC::metadata ( VFS_request r)
virtual

Retrieve the metadata for a path.

Parameters
rThe VFS_request object

Fetch the metadata for r->_path, using the VFS_node_type::getType() resolver on the path's extension.

Note that the path does not have to be valid or exist for the resolver to use an extension.

Reimplemented from VFS_node.

Definition at line 161 of file VFS_qrc.cpp.

◆ read()

void VFS_QRC::read ( VFS_request r)
virtual

Return the data contents of this node, or if it's a container call ls()

Parameters
rThe VFS_request object

The base class implementation will return no data and _success will be false, except for the case of isContainer()==true, where ls() will be performed.

Data should be written to VFS_request::_data, and can be any JSON content.

Note that if a pane is subscribing to a node, the VFS_client will close panes that receive null as content. Even if you plan to do nothing with the read value of a node, you should provide some non-null data to prevent the pane from closing, or failing to open.

See also
Requests

Reimplemented from VFS_node.

Definition at line 64 of file VFS_qrc.cpp.

◆ rm()

void VFS_QRC::rm ( VFS_request r)
virtual

Attempt to rm.

Parameters
rThe VFS_request object

This function will always cause r->_success to become false, as this node is read-only.

Reimplemented from VFS_node.

Definition at line 194 of file VFS_qrc.cpp.

◆ submit()

void VFS_QRC::submit ( VFS_request r)
virtual

Attempt to submit.

Parameters
rThe VFS_request object

This function will always cause r->_success to become false, as this node is read-only.

Reimplemented from VFS_node.

Definition at line 180 of file VFS_qrc.cpp.

◆ subscribe()

void VFS_QRC::subscribe ( VFS_request r)
virtual

Subscribe to a path.

Parameters
rThe VFS_request object

Attempt to subscribe to a path in this resource. This is kind of useless, as no diff will ever be generated from read-only data.

Reimplemented from VFS_node.

Definition at line 208 of file VFS_qrc.cpp.

◆ write()

void VFS_QRC::write ( VFS_request r)
virtual

Attempt to write.

Parameters
rThe VFS_request object

This function will always cause r->_success to become false, which is a failure.

If this was not overridden in the subclass, a default error message from VFS_node::write() would appear, but it wouldn't make sense.

Reimplemented from VFS_node.

Definition at line 145 of file VFS_qrc.cpp.

Member Data Documentation

◆ _path

QString VFS_QRC::_path
private

The Qt resource path prefix. Must start with ":/".

Definition at line 32 of file VFS_qrc.h.

◆ _raw

bool VFS_QRC::_raw
private

Whether to fetch data in JSON mode or RAW mode.

Definition at line 33 of file VFS_qrc.h.


The documentation for this class was generated from the following files: