Adapt copyright header
[contrib/qtwebsockets.git] / src / websockets / qwebsocketcorsauthenticator.cpp
index c2117c6..be126ef 100644 (file)
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** 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.
@@ -68,13 +73,14 @@ QT_BEGIN_NAMESPACE
 /*!
   \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()
 {}
@@ -84,23 +90,19 @@ 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))
@@ -110,17 +112,49 @@ QWebSocketCorsAuthenticator::QWebSocketCorsAuthenticator(const QWebSocketCorsAut
 /*!
   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.
  */
@@ -131,7 +165,9 @@ QString QWebSocketCorsAuthenticator::origin() const
 }
 
 /*!
-  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.