Skip to content

Commit

Permalink
Move QgsHanaConnectionRef class to qgshanaconnectionpool.h
Browse files Browse the repository at this point in the history
  • Loading branch information
Maksim Rylov authored and mrylov committed Dec 7, 2020
1 parent 06f3ddf commit fc69781
Show file tree
Hide file tree
Showing 9 changed files with 42 additions and 37 deletions.
1 change: 1 addition & 0 deletions src/providers/hana/qgshanacolumntypethread.cpp
Expand Up @@ -16,6 +16,7 @@
***************************************************************************/
#include "qgshanacolumntypethread.h"
#include "qgshanaconnection.h"
#include "qgshanaconnectionpool.h"
#include "qgshanautils.h"
#include "qgsmessagelog.h"
#include "qgslogger.h"
Expand Down
20 changes: 0 additions & 20 deletions src/providers/hana/qgshanaconnection.cpp
Expand Up @@ -23,7 +23,6 @@
#include "qgshanadriver.h"
#include "qgshanaexception.h"
#include "qgshanaresultset.h"
#include "qgshanasettings.h"
#include "qgshanatablemodel.h"
#include "qgshanautils.h"
#include "qgsmessagelog.h"
Expand Down Expand Up @@ -770,22 +769,3 @@ PreparedStatementRef QgsHanaConnection::createPreparedStatement( const QString &
}
return stmt;
}

QgsHanaConnectionRef::QgsHanaConnectionRef( const QgsDataSourceUri &uri )
{
mConnection = std::unique_ptr<QgsHanaConnection>(
QgsHanaConnectionPool::instance()->acquireConnection( QgsHanaUtils::connectionInfo( uri ) ) );
}

QgsHanaConnectionRef::QgsHanaConnectionRef( const QString &name )
{
QgsHanaSettings settings( name, true );
mConnection = std::unique_ptr<QgsHanaConnection>(
QgsHanaConnectionPool::instance()->acquireConnection( QgsHanaUtils::connectionInfo( settings.toDataSourceUri() ) ) );
}

QgsHanaConnectionRef::~QgsHanaConnectionRef()
{
if ( mConnection && QgsHanaConnectionPool::hasInstance() )
QgsHanaConnectionPool::instance()->releaseConnection( mConnection.release() );
}
16 changes: 0 additions & 16 deletions src/providers/hana/qgshanaconnection.h
Expand Up @@ -83,20 +83,4 @@ class QgsHanaConnection : public QObject
QString mUserName;
};

class QgsHanaConnectionRef
{
public:
QgsHanaConnectionRef() = default;
QgsHanaConnectionRef( const QString &name );
QgsHanaConnectionRef( const QgsDataSourceUri &uri );
~QgsHanaConnectionRef();

bool isNull() const { return mConnection.get() == nullptr; }
QgsHanaConnection &operator*() { return *mConnection; }
QgsHanaConnection *operator->() { return mConnection.get(); }

private:
std::unique_ptr<QgsHanaConnection> mConnection;
};

#endif // QGSHANACONNECTION_H
21 changes: 21 additions & 0 deletions src/providers/hana/qgshanaconnectionpool.cpp
Expand Up @@ -16,6 +16,8 @@
***************************************************************************/
#include "qgshanaconnection.h"
#include "qgshanaconnectionpool.h"
#include "qgshanasettings.h"
#include "qgshanautils.h"

QgsHanaConnectionPoolGroup::QgsHanaConnectionPoolGroup( const QString &name )
: QgsConnectionPoolGroup<QgsHanaConnection*>( name )
Expand Down Expand Up @@ -53,3 +55,22 @@ QgsHanaConnectionPool::~QgsHanaConnectionPool()
{
QgsDebugCall;
}

QgsHanaConnectionRef::QgsHanaConnectionRef( const QgsDataSourceUri &uri )
{
mConnection = std::unique_ptr<QgsHanaConnection>(
QgsHanaConnectionPool::instance()->acquireConnection( QgsHanaUtils::connectionInfo( uri ) ) );
}

QgsHanaConnectionRef::QgsHanaConnectionRef( const QString &name )
{
QgsHanaSettings settings( name, true );
mConnection = std::unique_ptr<QgsHanaConnection>(
QgsHanaConnectionPool::instance()->acquireConnection( QgsHanaUtils::connectionInfo( settings.toDataSourceUri() ) ) );
}

QgsHanaConnectionRef::~QgsHanaConnectionRef()
{
if ( mConnection && QgsHanaConnectionPool::hasInstance() )
QgsHanaConnectionPool::instance()->releaseConnection( mConnection.release() );
}
16 changes: 16 additions & 0 deletions src/providers/hana/qgshanaconnectionpool.h
Expand Up @@ -81,4 +81,20 @@ class QgsHanaConnectionPool
static QgsHanaConnectionPool *sInstance;
};

class QgsHanaConnectionRef
{
public:
QgsHanaConnectionRef() = default;
QgsHanaConnectionRef( const QString &name );
QgsHanaConnectionRef( const QgsDataSourceUri &uri );
~QgsHanaConnectionRef();

bool isNull() const { return mConnection.get() == nullptr; }
QgsHanaConnection &operator*() { return *mConnection; }
QgsHanaConnection *operator->() { return mConnection.get(); }

private:
std::unique_ptr<QgsHanaConnection> mConnection;
};

#endif // QGSHANACONNECTIONPOOL_H
1 change: 1 addition & 0 deletions src/providers/hana/qgshanadataitemguiprovider.cpp
Expand Up @@ -15,6 +15,7 @@
*
***************************************************************************/
#include "qgshanaconnection.h"
#include "qgshanaconnectionpool.h"
#include "qgshanadataitems.h"
#include "qgshanadataitemguiprovider.h"
#include "qgshananewconnection.h"
Expand Down
1 change: 1 addition & 0 deletions src/providers/hana/qgshanadataitems.cpp
Expand Up @@ -17,6 +17,7 @@
#include "qgsapplication.h"
#include "qgsdatasourceuri.h"
#include "qgshanaconnection.h"
#include "qgshanaconnectionpool.h"
#include "qgshanaexception.h"
#include "qgshananewconnection.h"
#include "qgshanadataitems.h"
Expand Down
1 change: 1 addition & 0 deletions src/providers/hana/qgshanafeatureiterator.cpp
Expand Up @@ -17,6 +17,7 @@
#include "qgsexception.h"
#include "qgsgeometry.h"
#include "qgsgeometryfactory.h"
#include "qgshanaconnection.h"
#include "qgshanaexception.h"
#include "qgshanaexpressioncompiler.h"
#include "qgshanafeatureiterator.h"
Expand Down
2 changes: 1 addition & 1 deletion src/providers/hana/qgshanafeatureiterator.h
Expand Up @@ -18,7 +18,7 @@
#define QGSHANAFEATUREITERATOR_H

#include "qgsfeatureiterator.h"
#include "qgshanaconnection.h"
#include "qgshanaconnectionpool.h"
#include "qgshanaprovider.h"
#include "qgshanaresultset.h"

Expand Down

0 comments on commit fc69781

Please sign in to comment.