Remoto - VFS
|
Create a websocket client that will observe VFS connection rules like auth and reconnect. More...
#include <VFS_websocket_VFSclient.h>
Signals | |
void | authDenied () |
A connection was attempted, but authorization was denied. More... | |
void | authorized () |
A connection has been made and authorization is complete. More... | |
void | commandReceived (QString command, QJsonObject attributes) |
A command was received, but it needs to be processed by a listener. More... | |
Signals inherited from VFS_websocket_client | |
void | connected () |
Connection has been made. More... | |
void | disconnected () |
Connection has been lost. More... | |
void | error (QAbstractSocket::SocketError) |
There has been a socket error. More... | |
void | readyBinaryMessage (QByteArray message) |
A binary message has been received. More... | |
void | readyTextMessage (QString message) |
A text message has been received. 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... | |
Public Member Functions | |
VFS_websocket_VFSclient (QString wsurl, QString username, QString password="", quint16 interval=3000) | |
Create a websocket client that will observe VFS connection rules like auth and reconnect. More... | |
virtual | ~VFS_websocket_VFSclient () |
void | sendBinary (QString command, QJsonObject attributes) |
Send a VFS command as a text message. More... | |
void | sendText (QString command, QJsonObject attributes) |
Send a VFS command as a text message. More... | |
Public Member Functions inherited from VFS_websocket_client | |
VFS_websocket_client (QString wsurl, quint16 interval=3000) | |
VFS_websocket_client (QWebSocket *socket, VFS_websocket_server *server) | |
virtual | ~VFS_websocket_client () |
VFS_websocket_client destructor -. More... | |
virtual bool | isConnected () |
If the client will attempt to reconnect, return true. More... | |
virtual bool | isConnecting () |
If the client will attempt to reconnect, return true. More... | |
virtual bool | isContainer () |
A VFS_websocket_client cannot contain children. More... | |
virtual void | submit (VFS_request *r) |
Submit to the socket. More... | |
virtual void | write (VFS_request *r) |
Write to the socket. More... | |
virtual bool | writeBinary (QByteArray data) |
Write binary data over the websocket. More... | |
virtual bool | writeText (QString data) |
Write text data over the websocket. 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... | |
virtual VFS_node * | find (VFS_request *r) |
Find a node using a VFS_request. More... | |
VFS_node * | findChildWithName (QString name) |
Check if a child with a given name exists. More... | |
virtual VFS_node * | mount () |
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_node * | unmount () |
Unmount this node. More... | |
virtual bool | validChildName (QString name) |
Check if a node name is valid. More... | |
Protected Slots | |
virtual void | socket_connected () |
Override the default VFS_websocket_client::socket_connected() command to include an authorization step. More... | |
Protected Slots inherited from VFS_websocket_client | |
virtual void | close () |
Close the socket if it is connected. More... | |
virtual void | socket_connected () |
Slot called when the client is connected. More... | |
virtual void | socket_disconnected () |
Slot called when the client is disconnected. More... | |
virtual void | socket_receive_binary (QByteArray message) |
VFS_websocket_client::socket_receive_binary. More... | |
virtual void | socket_receive_text (QString message) |
The socket has received a message in text mode. More... | |
virtual void | startPing () |
Start the ping timer. More... | |
virtual void | timerEvent (QTimerEvent *event) |
Send the ping command. More... | |
Protected Member Functions | |
virtual QJsonDocument | receive (QByteArray message) |
Receive a message from the server. More... | |
Protected Member Functions inherited from VFS_websocket_client | |
virtual void | authorized () |
Notify the node that it has received authorization from some auth method. More... | |
virtual void | init () |
Initialize needed signal/slot connections. 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 | 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 | _password |
password used when authenticating More... | |
QString | _username |
username used when authenticating More... | |
Protected Attributes inherited from VFS_websocket_client | |
QHostAddress | _address |
The network address of the connected client. More... | |
bool | _authenticated |
if auth has taken place and succeeded More... | |
bool | _authorized |
if this connection has a session More... | |
int | _connectID |
For client connections, the reconnect timerID. More... | |
quint16 | _interval |
The reconnect interval if disconnected. More... | |
bool | _isClient |
A client connection may not be created by a listening server, thus the second constructor. More... | |
int | _pingID |
Connections can become stale; This is the ID of the ping timer. More... | |
VFS_websocket_server * | _server |
owning server More... | |
QWebSocket * | _socket |
client socket More... | |
QString | _wsurl |
For client connections, the WebSocket address to connect to. 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... | |
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... | |
Create a websocket client that will observe VFS connection rules like auth and reconnect.
This is the same connection that would be made by a browser, and can be used to connect VFS instances together.
Definition at line 6 of file VFS_websocket_VFSclient.h.
|
explicit |
Create a websocket client that will observe VFS connection rules like auth and reconnect.
wsurl | The websocket address to connect to |
username | The username for auth |
password | The password for auth (optional) |
interval | The reconnect interval (optional) |
Definition at line 21 of file VFS_websocket_VFSclient.cpp.
|
virtual |
Definition at line 28 of file VFS_websocket_VFSclient.cpp.
|
signal |
A connection was attempted, but authorization was denied.
|
signal |
A connection has been made and authorization is complete.
|
signal |
A command was received, but it needs to be processed by a listener.
|
protectedvirtual |
Receive a message from the server.
The message may have been text or binary.
message | The incoming message as JSON, which will need to be parsed. |
Calling the base VFS_websocket_client::receive() is recommended, as it will parse the message and generate an error and return null on bad input.
Subclasses will want to call this function first and test if the returned QJsonDocument isNull().
Reimplemented from VFS_websocket_client.
Definition at line 95 of file VFS_websocket_VFSclient.cpp.
void VFS_websocket_VFSclient::sendBinary | ( | QString | command, |
QJsonObject | attributes | ||
) |
Send a VFS command as a text message.
command | The VFS command |
attributes | The attributes associated with the command |
Definition at line 73 of file VFS_websocket_VFSclient.cpp.
void VFS_websocket_VFSclient::sendText | ( | QString | command, |
QJsonObject | attributes | ||
) |
Send a VFS command as a text message.
command | The VFS command |
attributes | The attributes associated with the command |
Definition at line 55 of file VFS_websocket_VFSclient.cpp.
|
protectedvirtualslot |
Override the default VFS_websocket_client::socket_connected() command to include an authorization step.
Definition at line 36 of file VFS_websocket_VFSclient.cpp.
|
protected |
password used when authenticating
Definition at line 19 of file VFS_websocket_VFSclient.h.
|
protected |
username used when authenticating
Definition at line 18 of file VFS_websocket_VFSclient.h.