Remoto - VFS: VFS_application Class Reference
Remoto - VFS

A common base class for all things that want to act like an application or include ACL support. More...

#include <VFS_application.h>

Inheritance diagram for VFS_application:
VFS_node VFS_aclnode VFS_applications aclEditor admin cpuUsage logView sessionsList

Public Member Functions

Q_INVOKABLE VFS_application (QString settingsRoot="")
 Construct a VFS_application object. More...
 
virtual ~VFS_application ()
 
virtual VFS_nodefind (VFS_request *r)
 Check if a resource (path) is available for this application. 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 bool isContainer ()
 A VFS_node may have children. 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...
 

Protected Slots

virtual void initialize ()
 The default implementation does nothing. More...
 

Protected Member Functions

virtual QByteArray icon ()
 Fetch the application icon. More...
 
virtual void ls (VFS_request *r)
 List the contents of this 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 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 metadata (VFS_request *r)
 Fetch the metadata of this node. 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 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 rm (VFS_request *r)
 Remove a child entry from a node, or the node itself. More...
 
virtual void submit (VFS_request *r)
 Submit a diff to a node. More...
 
virtual void subscribe (VFS_request *r)
 Add an entry to this node's _subscription list. 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...
 
virtual void write (VFS_request *r)
 Write data to this node. More...
 

Protected Attributes

QString _settingsRoot
 The base path for future settings. 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...
 

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

Detailed Description

A common base class for all things that want to act like an application or include ACL support.

Applications will usually want to have an icon(), a series of resources that are listable, persistent settings, multiple specialized nodes, interface templates, custom javascript and css, etc.

VFS_application introduces _settingsRoot, initialize(), and ACL support.

Generally VFS_application objects will want to be created under the "/applications" node in a config file, but applications themselves may want to include sub-applications to include settings and ACLs.

See also
XML Config File(s)

Definition at line 7 of file VFS_application.h.

Constructor & Destructor Documentation

◆ VFS_application()

VFS_application::VFS_application ( QString  settingsRoot = "")
explicit

Construct a VFS_application object.

Parameters
settingsRootThe base path for any settings that want to be saved.

Most applications will want to save persistent data somewhere. A base VFS path is provided by _settingsRoot and the contents of that folder are for that use. An application developer will need to make sure session data per user is kept separate.

This will connect VFS::initialized() to VFS_application::initialize().

Warning
The signature here will probably change to include a userSettingsRoot and a applicationSettingsRoot so the developer doesn't have to think so hard about where they should go.
See also
VFS::initialized()
VFS_application::initialize()

Definition at line 38 of file VFS_application.cpp.

◆ ~VFS_application()

VFS_application::~VFS_application ( )
virtual

Definition at line 48 of file VFS_application.cpp.

Member Function Documentation

◆ find()

VFS_node * VFS_application::find ( VFS_request r)
virtual

Check if a resource (path) is available for this application.

Parameters
rThe VFS_request object
Returns
this, or the result of VFS_node::find()

This method will perform ACL checks on requested paths and disallow entries as needed.

Reimplemented from VFS_node.

Reimplemented in logView.

Definition at line 87 of file VFS_application.cpp.

◆ icon()

QByteArray VFS_application::icon ( )
protectedvirtual

Fetch the application icon.

Returns
The application icon in base64 or svg format, prepended with a mime

By default, this will call VFS_icons::get() with "application" as the argument. This will probably want to be subclassed so the default icon is not returned.

See also
VFS_node::icon()

Reimplemented from VFS_node.

Reimplemented in aclEditor, admin, cpuUsage, logView, and sessionsList.

Definition at line 74 of file VFS_application.cpp.

◆ initialize

void VFS_application::initialize ( )
protectedvirtualslot

The default implementation does nothing.

Subclass it for a particular application's needs.

Definition at line 58 of file VFS_application.cpp.

◆ ls()

void VFS_application::ls ( VFS_request r)
protectedvirtual

List the contents of this node.

Parameters
rThe VFS_request object

This method will perform ACL checks on each entry and exclude entries as needed.

See also
VFS_node::ls()

Reimplemented from VFS_node.

Definition at line 115 of file VFS_application.cpp.

Member Data Documentation

◆ _settingsRoot

QString VFS_application::_settingsRoot
protected

The base path for future settings.

Definition at line 18 of file VFS_application.h.


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