Remoto - VFS: VFS_websocket_VFSclient Class Reference
Remoto - VFS

Create a websocket client that will observe VFS connection rules like auth and reconnect. More...

#include <VFS_websocket_VFSclient.h>

Inheritance diagram for VFS_websocket_VFSclient:
VFS_websocket_client VFS_node

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

Detailed Description

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.

Constructor & Destructor Documentation

◆ VFS_websocket_VFSclient()

VFS_websocket_VFSclient::VFS_websocket_VFSclient ( QString  wsurl,
QString  username,
QString  password = "",
quint16  interval = 3000 
)
explicit

Create a websocket client that will observe VFS connection rules like auth and reconnect.

Parameters
wsurlThe websocket address to connect to
usernameThe username for auth
passwordThe password for auth (optional)
intervalThe reconnect interval (optional)

Definition at line 21 of file VFS_websocket_VFSclient.cpp.

◆ ~VFS_websocket_VFSclient()

VFS_websocket_VFSclient::~VFS_websocket_VFSclient ( )
virtual

Definition at line 28 of file VFS_websocket_VFSclient.cpp.

Member Function Documentation

◆ authDenied

void VFS_websocket_VFSclient::authDenied ( )
signal

A connection was attempted, but authorization was denied.

◆ authorized

void VFS_websocket_VFSclient::authorized ( )
signal

A connection has been made and authorization is complete.

◆ commandReceived

void VFS_websocket_VFSclient::commandReceived ( QString  command,
QJsonObject  attributes 
)
signal

A command was received, but it needs to be processed by a listener.

◆ receive()

QJsonDocument VFS_websocket_VFSclient::receive ( QByteArray  message)
protectedvirtual

Receive a message from the server.

The message may have been text or binary.

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

◆ sendBinary()

void VFS_websocket_VFSclient::sendBinary ( QString  command,
QJsonObject  attributes 
)

Send a VFS command as a text message.

Parameters
commandThe VFS command
attributesThe attributes associated with the command

Definition at line 73 of file VFS_websocket_VFSclient.cpp.

◆ sendText()

void VFS_websocket_VFSclient::sendText ( QString  command,
QJsonObject  attributes 
)

Send a VFS command as a text message.

Parameters
commandThe VFS command
attributesThe attributes associated with the command

Definition at line 55 of file VFS_websocket_VFSclient.cpp.

◆ socket_connected

void VFS_websocket_VFSclient::socket_connected ( )
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.

Member Data Documentation

◆ _password

QString VFS_websocket_VFSclient::_password
protected

password used when authenticating

Definition at line 19 of file VFS_websocket_VFSclient.h.

◆ _username

QString VFS_websocket_VFSclient::_username
protected

username used when authenticating

Definition at line 18 of file VFS_websocket_VFSclient.h.


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