/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Kurt Pattyn <pattyn.kurt@gmail.com>.
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtWebSockets module of the Qt Toolkit.
\class QWebSocketCorsAuthenticator
\inmodule QtWebSockets
- \brief The QWebSocketCorsAuthenticator class provides an authenticator object for Cross Origin Requests (CORS).
+ \brief The QWebSocketCorsAuthenticator class provides an authenticator object for
+ Cross Origin Requests (CORS).
- The QWebSocketCorsAuthenticator class is used in the \l{QWebSocketServer::}{originAuthenticationRequired()} signal.
+ The QWebSocketCorsAuthenticator class is used in the
+ \l{QWebSocketServer::}{originAuthenticationRequired()} signal.
The class provides a way to pass back the required information to the QWebSocketServer.
- It provides applications with fine-grained control over which origin URLs are allowed and which aren't.
+ It provides applications with fine-grained control over which origin URLs are allowed
+ and which aren't.
By default, every origin is accepted.
- To get fine grained control, an application connects the \l{QWebSocketServer::}{originAuthenticationRequired()} signal to
- a slot. When the origin (QWebSocketCorsAuthenticator::origin()) is accepted, it calls QWebSocketCorsAuthenticator::setAllowed(true)
+ To get fine grained control, an application connects the
+ \l{QWebSocketServer::}{originAuthenticationRequired()} signal to a slot.
+ When the origin (QWebSocketCorsAuthenticator::origin()) is accepted,
+ it calls QWebSocketCorsAuthenticator::setAllowed(true)
\note Checking on the origin does not make much sense when the server is accessed
via a non-browser client, as that client can set whatever origin header it likes.
/*!
\internal
*/
-QWebSocketCorsAuthenticatorPrivate::QWebSocketCorsAuthenticatorPrivate(const QString &origin, bool allowed) :
+QWebSocketCorsAuthenticatorPrivate::QWebSocketCorsAuthenticatorPrivate(const QString &origin,
+ bool allowed) :
m_origin(origin),
m_isAllowed(allowed)
{}
/*!
- \internal
+ Destroys the object.
*/
QWebSocketCorsAuthenticatorPrivate::~QWebSocketCorsAuthenticatorPrivate()
{}
\note By default, allowed() returns true. This means that per default every origin is accepted.
*/
QWebSocketCorsAuthenticator::QWebSocketCorsAuthenticator(const QString &origin) :
- d_ptr(new QWebSocketCorsAuthenticatorPrivate(origin, true)) //all origins are per default allowed
+ d_ptr(new QWebSocketCorsAuthenticatorPrivate(origin, true))
{
}
/*!
- Destructs the object
+ Destroys the object
*/
QWebSocketCorsAuthenticator::~QWebSocketCorsAuthenticator()
{
- if (d_ptr)
- {
- delete d_ptr;
- }
}
/*!
- Constructs a coy of \a other
+ Constructs a copy of \a other
*/
QWebSocketCorsAuthenticator::QWebSocketCorsAuthenticator(const QWebSocketCorsAuthenticator &other) :
d_ptr(new QWebSocketCorsAuthenticatorPrivate(other.d_ptr->m_origin, other.d_ptr->m_isAllowed))
/*!
Assigns \a other to this authenticator object
*/
-QWebSocketCorsAuthenticator &QWebSocketCorsAuthenticator::operator =(const QWebSocketCorsAuthenticator &other)
+QWebSocketCorsAuthenticator &
+QWebSocketCorsAuthenticator::operator =(const QWebSocketCorsAuthenticator &other)
{
Q_D(QWebSocketCorsAuthenticator);
- if (this != &other)
- {
+ if (this != &other) {
d->m_origin = other.d_ptr->m_origin;
d->m_isAllowed = other.d_ptr->m_isAllowed;
}
return *this;
}
+#ifdef Q_COMPILER_RVALUE_REFS
+/*!
+ Move-constructs a QWebSocketCorsAuthenticator, making it point at the same
+ object \a other was pointing to.
+ */
+QWebSocketCorsAuthenticator::QWebSocketCorsAuthenticator(QWebSocketCorsAuthenticator &&other) :
+ d_ptr(other.d_ptr.take())
+{}
+
+/*!
+ Move-assigns \a other to this instance.
+ */
+QWebSocketCorsAuthenticator &
+QWebSocketCorsAuthenticator::operator =(QWebSocketCorsAuthenticator &&other)
+{
+ qSwap(d_ptr, other.d_ptr);
+ return *this;
+}
+
+#endif
+
+/*!
+ Swaps \a other with this authenticator.
+
+ This operation is very fast and never fails.
+ */
+void QWebSocketCorsAuthenticator::swap(QWebSocketCorsAuthenticator &other)
+{
+ if (&other != this)
+ qSwap(d_ptr, other.d_ptr);
+}
+
/*!
Returns the origin this autenticator is handling about.
*/
}
/*!
- Allows or disallows the origin. Setting \a allowed to true, will accept the connection request for the given origin.
+ Allows or disallows the origin. Setting \a allowed to true, will accept the connection request
+ for the given origin.
+
Setting \a allowed to false, will reject the connection request.
\note By default, all origins are accepted.