Have sqlite connection object be pointers to help make sure correct destruction pattern happens.

This commit is contained in:
Kevin Whitaker
2017-02-06 01:38:12 -05:00
parent 166443f9ad
commit 44df1cf607
2 changed files with 14 additions and 6 deletions

View File

@@ -29,11 +29,13 @@
#include <groovefingerprinter/fingerprinter.h>
#include <grooveplayer/player.h>
GroovePlayerMgr::GroovePlayerMgr (std::string dbFile) : sqliteConnection(dbFile), connectionPool(&sqliteConnection, 3)
GroovePlayerMgr::GroovePlayerMgr (std::string dbFile)
{
sqliteConnection = new Wt::Dbo::backend::Sqlite3(dbFile);
connectionPool = new Wt::Dbo::FixedSqlConnectionPool(sqliteConnection, 3);
musicScanDir = std::filesystem::current_path()/"music";
Wt::Dbo::Session sqlSession;
sqlSession.setConnectionPool(connectionPool);
sqlSession.setConnectionPool(*connectionPool);
sqlSession.mapClass<User>("user");
sqlSession.mapClass<AudioTrack>("tracks");
sqlSession.mapClass<UserAction>("actions");
@@ -52,6 +54,11 @@ GroovePlayerMgr::GroovePlayerMgr (std::string dbFile) : sqliteConnection(dbFile)
}
GroovePlayerMgr::~GroovePlayerMgr()
{
delete connectionPool;
}
std::list<AudioTrack> GroovePlayerMgr::getNextVoteBatch(Wt::Dbo::Session* session)
{
/**
@@ -136,7 +143,7 @@ void GroovePlayerMgr::grooveEventLoop()
*/
Wt::Dbo::Session sqlSession;
sqlSession.setConnectionPool(connectionPool);
sqlSession.setConnectionPool(*connectionPool);
sqlSession.mapClass<User>("user");
sqlSession.mapClass<AudioTrack>("tracks");
sqlSession.mapClass<UserAction>("actions");
@@ -471,7 +478,7 @@ void GroovePlayerMgr::removeOrphanedTracks(Wt::Dbo::Session* session)
void GroovePlayerMgr::grooveAudioScannerLoop()
{
Wt::Dbo::Session sqlSession;
sqlSession.setConnectionPool(connectionPool);
sqlSession.setConnectionPool(*connectionPool);
sqlSession.mapClass<User>("user");
sqlSession.mapClass<AudioTrack>("tracks");
sqlSession.mapClass<UserAction>("actions");

View File

@@ -54,8 +54,9 @@ private:
enum PlayerEvents {NOTHING, GROOVE_NOWPLAYING, VOTING_ENDED, VOTE_CAST, PLAYING_PAUSED, PLAYING_RESUMED, SKIP_REQUESTED, SKIP_VOTE_CAST, SKIP_VOTING_ENDED, ADMIN_FORCE_SKIP};
GroovePlayerMgr (std::string dbFile);
Wt::Dbo::backend::Sqlite3 sqliteConnection;
Wt::Dbo::FixedSqlConnectionPool connectionPool;
~GroovePlayerMgr();
Wt::Dbo::backend::Sqlite3* sqliteConnection;
Wt::Dbo::FixedSqlConnectionPool* connectionPool;
bool continueEventLoop = true;
std::list<AudioTrack> requestQueue;