Remoto - VFS: VFS_httpd_browser Class Reference
Remoto - VFS

A subclass of VFS_httpd which will display a summary of the current state of the VFS. More...

#include <VFS_httpd_browser.h>

Inheritance diagram for VFS_httpd_browser:
VFS_httpd VFS_tcp_server VFS_node

Public Member Functions

Q_INVOKABLE VFS_httpd_browser (QString dataRootPath, quint16 port, QHostAddress addr=QHostAddress::Any, bool ssl=false, QString sslCertPath="", QString sslKeyPath="")
 
virtual ~VFS_httpd_browser ()
 
- Public Member Functions inherited from VFS_httpd
 VFS_httpd (quint16 port, QHostAddress addr=QHostAddress::Any, bool ssl=false, QString sslCertPath="", QString sslKeyPath="")
 VFS_httpd constructor. More...
 
virtual ~VFS_httpd ()
 
virtual bool isContainer ()
 A VFS_httpd node cannot contain children. More...
 
- Public Member Functions inherited from VFS_tcp_server
 VFS_tcp_server (quint16 port=0, QHostAddress address=QHostAddress::Any, bool ssl=false, QString sslCertPath="", QString sslKeyPath="")
 Create a VFS_tcp_server node. More...
 
virtual ~VFS_tcp_server ()
 
virtual QString reportDetails ()
 Report details of this node. 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...
 
virtual VFS_nodefind (VFS_request *r)
 Find a node using a VFS_request. More...
 
VFS_nodefindChildWithName (QString name)
 Check if a child with a given name exists. More...
 
virtual VFS_nodemount ()
 Mount this node. 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 handle (QHttpRequest *req, QHttpResponse *resp)
 Handle an incoming request. More...
 
- Protected Slots inherited from VFS_httpd
virtual void createNewConnection ()
 The server has received a new http connection request. More...
 
virtual void handle (QHttpRequest *req, QHttpResponse *resp)
 Handle an incoming http request. More...
 
virtual bool listen ()
 Start listening for incoming connections. More...
 
- Protected Slots inherited from VFS_tcp_server
virtual void closeConnection ()
 Close a socket connection. More...
 
virtual void createNewConnection ()
 The server has received a new connection request. More...
 

Protected Member Functions

VFS_nodedataRoot ()
 Resolve the _dataRootPath into a VFS_node. More...
 
- Protected Member Functions inherited from VFS_httpd
void initMimes ()
 Initialize the mime map. More...
 
- Protected Member Functions inherited from VFS_tcp_server
virtual VFS_tcp_clientnewClient (QTcpSocket *socket, bool ssl=false, QSslConfiguration sslConfiguration=QSslConfiguration())
 Create a new VFS_tcp_client with the new socket. More...
 
virtual void newConnection (VFS_tcp_client *c)
 Attach the clientMessage handler. 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 ls (VFS_request *r)
 List the contents of this node. 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

VFS_node_dataRoot
 The node found by resolving _dataRootPath. More...
 
QString _dataRootPath
 The VFS root path to serve from. More...
 
- Protected Attributes inherited from VFS_httpd
QHttpServer _httpd
 QHttpServer instance. More...
 
- Protected Attributes inherited from VFS_tcp_server
QHostAddress _listenAddress
 Address(es) allowed to connect, or 0.0.0.0 if all are allowed. More...
 
quint16 _port
 TCP port to listen on, or 0 to find an available one. More...
 
VFSQTcpServer _socket
 TCP socket used for connections. More...
 
bool _ssl
 Use ssl? More...
 
QString _sslCertPath
 ssl cert file path More...
 
QSslConfiguration _sslConfiguration
 ssl config built up from below paths More...
 
QString _sslKeyPath
 ssl key file path 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_tcp_server
virtual void clientError (QAbstractSocket::SocketError error)
 A socket error has occurred. More...
 
virtual void clientMessage (QByteArray message)
 A message has been received. More...
 
virtual bool listen ()
 Open the server socket and listen for new connections. More...
 
- 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...
 
- Static Public Attributes inherited from VFS_httpd
static QHash< QString, QString > MIME_TYPES
 The mime type map. More...
 

Detailed Description

A subclass of VFS_httpd which will display a summary of the current state of the VFS.

This class implements meaningful responses to the base class, creating a debugging tool for developers.

It will want to be started on its own port, and when browsed, will show the current state of the VFS including thread addresses, object addresses, the tree hierarchy, and additional useful information.

This will probably want to be placed in its own thread, as pages sometimes will need to be parsed and processed, and a full tree view request can create hundreds of http requests.

See also
VFS_httpd
VFS_node::report()
VFS_node::reportDetails()
VFS_httpd_browser_responder::validatePath()

Definition at line 13 of file VFS_httpd_browser.h.

Constructor & Destructor Documentation

◆ VFS_httpd_browser()

VFS_httpd_browser::VFS_httpd_browser ( QString  dataRootPath,
quint16  port,
QHostAddress  addr = QHostAddress::Any,
bool  ssl = false,
QString  sslCertPath = "",
QString  sslKeyPath = "" 
)
Parameters
dataRootPathThe root VFS path to serve, probably '/'
portThe port to listen on
addrAddresses allowed to connect, or 0.0.0.0 for all addresses.
sslIs it in ssl mode?
sslCertPathThe path to the cert file
sslKeyPathThe path to the key file

Definition at line 42 of file VFS_httpd_browser.cpp.

◆ ~VFS_httpd_browser()

VFS_httpd_browser::~VFS_httpd_browser ( )
virtual

Definition at line 49 of file VFS_httpd_browser.cpp.

Member Function Documentation

◆ dataRoot()

VFS_node * VFS_httpd_browser::dataRoot ( )
protected

Resolve the _dataRootPath into a VFS_node.

Returns
The resolved VFS_node

Definition at line 117 of file VFS_httpd_browser.cpp.

◆ handle

void VFS_httpd_browser::handle ( QHttpRequest *  req,
QHttpResponse *  resp 
)
protectedvirtualslot

Handle an incoming request.

Parameters
reqThe parsed request
respThe response object

Because the data behind an httpd request may be fetched asynchronously, this function returns nothing, but will store the response object in a VFS_httpd_browser_responder instance.

VFS_httpd_browser_request instances are created and issued to the VFS as needed, namely for asynchronous requests to the VFS for VFS_node::report() data.

See also
VFS_httpd_browser_responder
VFS_httpd_browser_request

Definition at line 68 of file VFS_httpd_browser.cpp.

Member Data Documentation

◆ _dataRoot

VFS_node* VFS_httpd_browser::_dataRoot
protected

The node found by resolving _dataRootPath.

Definition at line 23 of file VFS_httpd_browser.h.

◆ _dataRootPath

QString VFS_httpd_browser::_dataRootPath
protected

The VFS root path to serve from.

Definition at line 22 of file VFS_httpd_browser.h.


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