Remoto - VFS
|
A VFS_node that manages a QWebSocket connection. More...
#include <VFS_websocket_client.h>
Signals | |
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_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 | 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 void | authorized () |
Notify the node that it has received authorization from some auth method. More... | |
virtual void | init () |
Initialize needed signal/slot connections. More... | |
virtual QJsonDocument | receive (QByteArray message) |
VFS_websocket_VFSclient::receive. 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 | |
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... | |
Friends | |
class | VFS_websocket_server |
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... | |
A VFS_node that manages a QWebSocket connection.
The connected side will usually be a web browser client, but could also be a unity game engine, for instance.
Definition at line 11 of file VFS_websocket_client.h.
|
explicit |
socket | A newly created QWebSocket |
server | The server instance that is hosting the socket. |
Connects signals and slots together for basic functionality: disconnection, incoming messages, errors.
Definition at line 23 of file VFS_websocket_client.cpp.
|
explicit |
wsurl | A websocket address in the form: ws[s]://address[:port][/path/to/resource] |
interval | Interval to attempt reconnection |
Definition at line 42 of file VFS_websocket_client.cpp.
|
virtual |
VFS_websocket_client destructor -.
-- Close the socket, and call deleteLater() on it.
Definition at line 113 of file VFS_websocket_client.cpp.
|
protectedvirtual |
Notify the node that it has received authorization from some auth method.
The default implementation will mount the newly authorized node into the VFS. Subclasses may want to do some setup after the node has been authorized. All subclass implementations need to call this.
Only after authorization will a node be mounted with a valid VFS_session.
This deferred mounting ensures that the node is complete before anything tries to subscribe to it.
Definition at line 137 of file VFS_websocket_client.cpp.
|
protectedvirtualslot |
Close the socket if it is connected.
Definition at line 265 of file VFS_websocket_client.cpp.
|
signal |
Connection has been made.
|
signal |
Connection has been lost.
|
signal |
There has been a socket error.
|
protectedvirtual |
Initialize needed signal/slot connections.
Definition at line 67 of file VFS_websocket_client.cpp.
|
virtual |
If the client will attempt to reconnect, return true.
Otherwise false.
Definition at line 236 of file VFS_websocket_client.cpp.
|
virtual |
If the client will attempt to reconnect, return true.
Otherwise false.
Definition at line 226 of file VFS_websocket_client.cpp.
|
virtual |
A VFS_websocket_client cannot contain children.
Reimplemented from VFS_node.
Definition at line 341 of file VFS_websocket_client.cpp.
|
signal |
A binary message has been received.
|
signal |
A text message has been received.
|
protectedvirtual |
VFS_websocket_VFSclient::receive.
message | The incoming message as JSON, which will need to be parsed. |
Reimplemented in VFS_remotoserver_client, and VFS_websocket_VFSclient.
Definition at line 351 of file VFS_websocket_client.cpp.
|
protectedvirtualslot |
Slot called when the client is connected.
Definition at line 190 of file VFS_websocket_client.cpp.
|
protectedvirtualslot |
Slot called when the client is disconnected.
Definition at line 210 of file VFS_websocket_client.cpp.
|
protectedvirtualslot |
VFS_websocket_client::socket_receive_binary.
message | The incoming message |
Definition at line 256 of file VFS_websocket_client.cpp.
|
protectedvirtualslot |
The socket has received a message in text mode.
message | The incoming message |
Definition at line 246 of file VFS_websocket_client.cpp.
|
protectedvirtualslot |
Start the ping timer.
The startPing() function will start a ping timer. This will send a ping command every 20 seconds to a connected client, which will keep the connection open on browsers that disconnect due to inactivity.
Definition at line 151 of file VFS_websocket_client.cpp.
|
virtual |
Submit to the socket.
r | The VFS_request object |
The base class implementation logs an error. It needs to be subclassed.
Reimplemented from VFS_node.
Definition at line 290 of file VFS_websocket_client.cpp.
|
protectedvirtualslot |
Send the ping command.
When the timer fires (every 20 seconds), send the ping command.
Definition at line 165 of file VFS_websocket_client.cpp.
|
virtual |
Write to the socket.
r | The VFS_request object |
The base class implementation logs an error. It needs to be subclassed.
Reimplemented from VFS_node.
Reimplemented in VFS_remotoserver_client.
Definition at line 278 of file VFS_websocket_client.cpp.
|
virtual |
Write binary data over the websocket.
data | The binary data to write |
DOCME
Definition at line 325 of file VFS_websocket_client.cpp.
|
virtual |
Write text data over the websocket.
data | The string data to write |
Definition at line 303 of file VFS_websocket_client.cpp.
|
friend |
Definition at line 15 of file VFS_websocket_client.h.
|
protected |
The network address of the connected client.
Definition at line 37 of file VFS_websocket_client.h.
|
protected |
if auth has taken place and succeeded
Definition at line 35 of file VFS_websocket_client.h.
|
protected |
if this connection has a session
Definition at line 36 of file VFS_websocket_client.h.
|
protected |
For client connections, the reconnect timerID.
Definition at line 41 of file VFS_websocket_client.h.
|
protected |
The reconnect interval if disconnected.
Definition at line 43 of file VFS_websocket_client.h.
|
protected |
A client connection may not be created by a listening server, thus the second constructor.
Definition at line 40 of file VFS_websocket_client.h.
|
protected |
Connections can become stale; This is the ID of the ping timer.
Definition at line 38 of file VFS_websocket_client.h.
|
protected |
owning server
Definition at line 34 of file VFS_websocket_client.h.
|
protected |
client socket
Definition at line 33 of file VFS_websocket_client.h.
|
protected |
For client connections, the WebSocket address to connect to.
Definition at line 42 of file VFS_websocket_client.h.