Remoto - VFS: VFS_tcp_export_client Class Reference
Remoto - VFS

The socket client created by VFS_tcp_export. More...

#include <VFS_tcp_export_client.h>

Inheritance diagram for VFS_tcp_export_client:
VFS_tcp_client VFS_node

Public Member Functions

 VFS_tcp_export_client (QTcpSocket *socket, QString exportRoot, bool ssl=false, QSslConfiguration sslConfiguration=QSslConfiguration(), QByteArray icon="")
 
virtual ~VFS_tcp_export_client ()
 
- Public Member Functions inherited from VFS_tcp_client
 VFS_tcp_client (QString address, quint16 port, bool ssl=false, QString sslCertPath="")
 VFS_tcp_client constructor for client mode. More...
 
 VFS_tcp_client (QTcpSocket *socket, bool ssl=false, QSslConfiguration sslConfiguration=QSslConfiguration())
 VFS_tcp_client constructor for client mode. More...
 
 VFS_tcp_client (QTcpSocket *socket, bool ssl=false, QString sslCertPath="")
 VFS_tcp_client constructor for server mode. More...
 
virtual ~VFS_tcp_client ()
 
virtual bool isContainer ()
 DOCME. More...
 
virtual QString reportDetails ()
 Report data about this client. More...
 
virtual void write (VFS_request *r)
 DOCME. More...
 
virtual void writeMessage (QByteArray data)
 DOCME. 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 applyDiff (VFS_request *t)
 
virtual void executeMessageRequest (VFS_tcp_export_request *r)
 Execute a message request. More...
 
virtual void receiveMessage (QByteArray message)
 
virtual void receiveResponse (VFS_request *t)
 
virtual void removeSourcePathMap (VFS_node *n)
 Remove a _sourcePathMap entry, if found. More...
 
virtual void sendCodeDirectory ()
 DOCME. More...
 
- Protected Slots inherited from VFS_tcp_client
void modeChanged (QSslSocket::SslMode mode)
 A slot for when the SSL mode has changed. More...
 
void peerVerifyError (const QSslError &error)
 VFS_tcp_client::peerVerifyError. More...
 
void sslErrors (const QList< QSslError > &errors)
 VFS_tcp_client::sslErrors. More...
 
void sslReady ()
 Signal that an SSL connnection has been established. More...
 

Protected Member Functions

virtual void addSourcePathMap (VFS_node *source, QString path)
 Add a VFS_tcp_export_client::_sourcePathMap entry for a path from a client's perspective to a VFS_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 ls (VFS_request *r)
 List the contents of this node. 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...
 

Protected Attributes

QString _exportRoot
 The VFS path to export. More...
 
QByteArray _icon
 An icon that can override the icon provided by the shared node. More...
 
QMap< QString, QList< VFS_tcp_export_request * > > _queuedRequests
 The requests that have been queued, per session id, due to a session definition request. More...
 
QMap< VFS_node *, QString > _sourcePathMap
 Map between nodes and subscription paths. More...
 
- Protected Attributes inherited from VFS_tcp_client
QString _address
 The address resolved by peerAddress(), or the address to connect to. More...
 
bool _initialized
 Has this node been initialized? More...
 
MESSAGE_SIZE _messageSize
 The message size received. Will wait for this many bytes before emitting messageReady. More...
 
quint16 _port
 The port to connect to. More...
 
QTcpSocket * _socket
 The socket connection. More...
 
bool _ssl
 Use ssl? More...
 
QString _sslCertPath
 ssl cert 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...
 

Friends

class VFS_tcp_export_request
 
class VFS_tcp_export_sessionManager
 

Additional Inherited Members

- Public Slots inherited from VFS_tcp_client
virtual void close ()
 DOCME. More...
 
virtual void init ()
 DOCME. More...
 
void initSSL ()
 DOCME. More...
 
void readyRead ()
 DOCME. 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_tcp_client
void connected ()
 Emitted when a connection has been made. More...
 
void disconnected ()
 Emitted when a connection has been lost. More...
 
void error (QAbstractSocket::SocketError)
 Emitted when a socket error occurs. More...
 
void moreToRead ()
 Emitted when an incoming message has additional data. More...
 
void readyMessage (QByteArray message)
 Emitted when a message is ready for processing. 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

The socket client created by VFS_tcp_export.

See also
VFS_tcp_export

Definition at line 8 of file VFS_tcp_export_client.h.

Constructor & Destructor Documentation

◆ VFS_tcp_export_client()

VFS_tcp_export_client::VFS_tcp_export_client ( QTcpSocket *  socket,
QString  exportRoot,
bool  ssl = false,
QSslConfiguration  sslConfiguration = QSslConfiguration(),
QByteArray  icon = "" 
)
explicit
Parameters
socket
exportRoot
ssl
sslConfiguration
iconDOCME

Definition at line 29 of file VFS_tcp_export_client.cpp.

◆ ~VFS_tcp_export_client()

VFS_tcp_export_client::~VFS_tcp_export_client ( )
virtual

Definition at line 43 of file VFS_tcp_export_client.cpp.

Member Function Documentation

◆ addSourcePathMap()

void VFS_tcp_export_client::addSourcePathMap ( VFS_node source,
QString  path 
)
protectedvirtual

Add a VFS_tcp_export_client::_sourcePathMap entry for a path from a client's perspective to a VFS_node.

Parameters
sourceThe node that responded to a VFS_request::subscribe request
pathThe path to map

Because a VFS_node doesn't know what its path is, the client must take note of the path used to subscribe to a node, and use that mapping to formulate a response to a request.

This map is maintained by connecting to the unmounted() signal of the source VFS_node.

See also
VFS_tcp_export_client::execute()

Definition at line 460 of file VFS_tcp_export_client.cpp.

◆ applyDiff

void VFS_tcp_export_client::applyDiff ( VFS_request t)
protectedvirtualslot
Parameters
tDOCME

Definition at line 304 of file VFS_tcp_export_client.cpp.

◆ executeMessageRequest

void VFS_tcp_export_client::executeMessageRequest ( VFS_tcp_export_request r)
protectedvirtualslot

Execute a message request.

Parameters
rThe VFS_tcp_export_request to execute

This will be called directly if the client has no queue on a session. Otherwise, the client will queue requests as they come in and call this method on each one once the session is retrieved.

Definition at line 97 of file VFS_tcp_export_client.cpp.

◆ receiveMessage

void VFS_tcp_export_client::receiveMessage ( QByteArray  message)
protectedvirtualslot
Parameters
messageDOCME

Definition at line 66 of file VFS_tcp_export_client.cpp.

◆ receiveResponse

void VFS_tcp_export_client::receiveResponse ( VFS_request t)
protectedvirtualslot
Parameters
tDOCME

Definition at line 345 of file VFS_tcp_export_client.cpp.

◆ removeSourcePathMap

void VFS_tcp_export_client::removeSourcePathMap ( VFS_node s)
protectedvirtualslot

Remove a _sourcePathMap entry, if found.

Parameters
sThe VFS_node to remove from the map

Definition at line 487 of file VFS_tcp_export_client.cpp.

◆ sendCodeDirectory

void VFS_tcp_export_client::sendCodeDirectory ( )
protectedvirtualslot

DOCME.

Definition at line 508 of file VFS_tcp_export_client.cpp.

Friends And Related Function Documentation

◆ VFS_tcp_export_request

friend class VFS_tcp_export_request
friend

Definition at line 12 of file VFS_tcp_export_client.h.

◆ VFS_tcp_export_sessionManager

friend class VFS_tcp_export_sessionManager
friend

Definition at line 13 of file VFS_tcp_export_client.h.

Member Data Documentation

◆ _exportRoot

QString VFS_tcp_export_client::_exportRoot
protected

The VFS path to export.

Definition at line 21 of file VFS_tcp_export_client.h.

◆ _icon

QByteArray VFS_tcp_export_client::_icon
protected

An icon that can override the icon provided by the shared node.

Definition at line 22 of file VFS_tcp_export_client.h.

◆ _queuedRequests

QMap<QString, QList<VFS_tcp_export_request *> > VFS_tcp_export_client::_queuedRequests
protected

The requests that have been queued, per session id, due to a session definition request.

Definition at line 24 of file VFS_tcp_export_client.h.

◆ _sourcePathMap

QMap<VFS_node *, QString> VFS_tcp_export_client::_sourcePathMap
protected

Map between nodes and subscription paths.

Definition at line 20 of file VFS_tcp_export_client.h.


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