Remoto - VFS
|
The VFS_tcp_mount class is a client side connection that will attempt to connect to another VFS instance. More...
#include <VFS_tcp_mount.h>
Public Slots | |
virtual void | executeRequest (VFS_request *r) |
DOCME. More... | |
void | init () |
DOCME. More... | |
virtual void | unsubscribeAll (VFS_node *n) |
Remove all references to a subscriber from this node. More... | |
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... | |
Public Member Functions | |
Q_INVOKABLE | VFS_tcp_mount (QString name, QString path, QString address, quint16 port, quint16 interval=3000, bool ssl=false, QString sslCertPath="") |
VFS_tcp_mount constructor. More... | |
virtual | ~VFS_tcp_mount () |
virtual VFS_node * | find (VFS_request *r) |
Always return 'this'. More... | |
virtual bool | isContainer () |
bool | isMounted () |
Return the state of _mounted. More... | |
QString | path () |
Return the path to this node. More... | |
void | refreshSubscriptions () |
Resubscribe to what had been previously subscribed. More... | |
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 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_node * | append (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_request * | createRequest (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_node * | find (QString path) |
Find a node by string path. More... | |
VFS_node * | findChildWithName (QString name) |
Check if a child with a given name exists. More... | |
virtual VFS_node * | mount () |
Mount this node. More... | |
QString | uniqueChildName (QString name) |
Generate a unique child name. More... | |
virtual VFS_node * | unmount () |
Unmount this node. More... | |
virtual bool | validChildName (QString name) |
Check if a node name is valid. More... | |
Protected Slots | |
virtual void | receiveMessage (QByteArray message) |
virtual void | sendPing () |
DOCME. More... | |
virtual void | startConnecting () |
DOCME. More... | |
virtual void | startPing () |
DOCME. More... | |
virtual void | stopConnecting () |
DOCME. More... | |
virtual void | stopPing () |
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 | |
void | attemptConnection () |
DOCME. More... | |
postID | getNewRequestID () |
DOCME. More... | |
virtual QByteArray | icon () |
Fetch the icon for this node. More... | |
void | issueMounted (QString path) |
VFS_tcp_mount::issueMounted. More... | |
void | issueUnmounted () |
VFS_tcp_mount::issueUnmounted. More... | |
void | sendUnmountedRequests () |
DOCME. More... | |
void | timerEvent (QTimerEvent *e=nullptr) |
DOCME. 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 | 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 | |
int | _attemptInterval |
The interval to attempt (re)connections. More... | |
VFS_tcp_mount_directory | _codeDirectory |
The directory of code available when mounted. More... | |
postID | _currentID |
The current VFS_request_id. More... | |
bool | _mounted |
Is this mounted? More... | |
QString | _name |
The name of this node for logging purposes. More... | |
QString | _path |
The path to this node. More... | |
QTimer | _ping |
The ping timer object. More... | |
QMap< postID, VFS_request * > | _requests |
Outstanding VFS_requests. More... | |
int | _timerID |
The ID of the connection timer. More... | |
QList< VFS_request * > | _unmountedRequests |
Requests to submit when re-mounted. 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... | |
Static Protected Attributes | |
static QList< VFS_tcp_mount * > | _mounts |
The list of existing mounts. More... | |
static QMutex | _mountsLock |
A mutex for modifying the _mounts entry. More... | |
Private Member Functions | |
void | sendMessage (QByteArray message) |
send a message over the line More... | |
Friends | |
class | aclEditor |
class | VFS_tcp_export_client |
class | VFS_tcp_mount_directory |
Additional Inherited Members | |
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... | |
The VFS_tcp_mount class is a client side connection that will attempt to connect to another VFS instance.
This is analogous to an NFS mount between VFS instances. The receiving side needs to be listening with a VFS_tcp_export node.
ACLs can be applied and browsed as needed from the mounted VFS.
Definition at line 12 of file VFS_tcp_mount.h.
VFS_tcp_mount::VFS_tcp_mount | ( | QString | name, |
QString | path, | ||
QString | address, | ||
quint16 | port, | ||
quint16 | interval = 3000 , |
||
bool | ssl = false , |
||
QString | sslCertPath = "" |
||
) |
VFS_tcp_mount constructor.
name | The name of this node, for logging |
path | The VFS path to this node |
address | The address to connect to |
port | The port to connect to |
interval | Upon disconnection, the time in milliseconds to re-attempt a connection |
ssl | Use ssl? |
sslCertPath | The sslCertPath on the local filesystem |
The values here are provided by the config file. It maintains a _mounted value depending on connection state and perhaps someday authentication state.
Definition at line 40 of file VFS_tcp_mount.cpp.
|
virtual |
Definition at line 55 of file VFS_tcp_mount.cpp.
|
protected |
DOCME.
Definition at line 184 of file VFS_tcp_mount.cpp.
|
virtualslot |
DOCME.
Definition at line 276 of file VFS_tcp_mount.cpp.
|
virtual |
Always return 'this'.
r | The VFS_request object |
As this is a network endpoint, this method will always return 'this'
Reimplemented from VFS_node.
Definition at line 806 of file VFS_tcp_mount.cpp.
|
protected |
DOCME.
Definition at line 772 of file VFS_tcp_mount.cpp.
|
protectedvirtual |
Fetch the icon for this node.
Reimplemented from VFS_node.
Definition at line 819 of file VFS_tcp_mount.cpp.
|
slot |
DOCME.
Definition at line 69 of file VFS_tcp_mount.cpp.
|
virtual |
bool VFS_tcp_mount::isMounted | ( | ) |
Return the state of _mounted.
Definition at line 830 of file VFS_tcp_mount.cpp.
|
protected |
|
protected |
QString VFS_tcp_mount::path | ( | ) |
Return the path to this node.
Definition at line 843 of file VFS_tcp_mount.cpp.
|
protectedvirtualslot |
message | DOCME |
Definition at line 405 of file VFS_tcp_mount.cpp.
void VFS_tcp_mount::refreshSubscriptions | ( | ) |
Resubscribe to what had been previously subscribed.
This is useful for when a connection is dropped and we want to seamlessly re-establish the state of the VFS mounts.
Definition at line 622 of file VFS_tcp_mount.cpp.
|
private |
send a message over the line
message | The message, which is presumed to be a json string. |
This will compress the outgoing data if COMPRESS_TCP_MOUNT is defined.
Definition at line 550 of file VFS_tcp_mount.cpp.
|
protectedvirtualslot |
DOCME.
Definition at line 242 of file VFS_tcp_mount.cpp.
|
protected |
DOCME.
Definition at line 687 of file VFS_tcp_mount.cpp.
|
protectedvirtualslot |
DOCME.
Definition at line 119 of file VFS_tcp_mount.cpp.
|
protectedvirtualslot |
DOCME.
Definition at line 218 of file VFS_tcp_mount.cpp.
|
protectedvirtualslot |
DOCME.
Definition at line 155 of file VFS_tcp_mount.cpp.
|
protectedvirtualslot |
DOCME.
Definition at line 230 of file VFS_tcp_mount.cpp.
|
protected |
DOCME.
Definition at line 105 of file VFS_tcp_mount.cpp.
|
virtualslot |
Remove all references to a subscriber from this node.
subscriber | The VFS_node to remove. |
This will also send an unsubscribe() request to a connected endpoint if this node is _mounted.
Definition at line 572 of file VFS_tcp_mount.cpp.
|
friend |
Definition at line 18 of file VFS_tcp_mount.h.
|
friend |
Definition at line 17 of file VFS_tcp_mount.h.
|
friend |
Definition at line 16 of file VFS_tcp_mount.h.
|
protected |
The interval to attempt (re)connections.
Definition at line 35 of file VFS_tcp_mount.h.
|
protected |
The directory of code available when mounted.
Definition at line 49 of file VFS_tcp_mount.h.
|
protected |
The current VFS_request_id.
Definition at line 39 of file VFS_tcp_mount.h.
|
protected |
Is this mounted?
Definition at line 37 of file VFS_tcp_mount.h.
|
staticprotected |
The list of existing mounts.
Definition at line 54 of file VFS_tcp_mount.h.
|
staticprotected |
A mutex for modifying the _mounts entry.
Definition at line 53 of file VFS_tcp_mount.h.
|
protected |
The name of this node for logging purposes.
Definition at line 33 of file VFS_tcp_mount.h.
|
protected |
The path to this node.
Definition at line 34 of file VFS_tcp_mount.h.
|
protected |
The ping timer object.
Definition at line 51 of file VFS_tcp_mount.h.
|
protected |
Outstanding VFS_requests.
Definition at line 40 of file VFS_tcp_mount.h.
|
protected |
The ID of the connection timer.
Definition at line 36 of file VFS_tcp_mount.h.
|
protected |
Requests to submit when re-mounted.
Definition at line 43 of file VFS_tcp_mount.h.