From ad26e8351f69d60208504f240f4751f8ab46b4d0 Mon Sep 17 00:00:00 2001 From: Kevin Whitaker Date: Sun, 29 Jan 2017 19:39:30 -0500 Subject: [PATCH] Add more UI events and get backend threaded up. --- CMakeLists.txt | 2 +- src/GroovePlayer.cpp | 23 +++++++++++++++++++++-- src/GroovePlayer.h | 11 +++++++++++ src/WebInterface.cpp | 12 ++++++++++++ src/WebInterface.h | 2 ++ 5 files changed, 47 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 67fbec5..d14dccd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,6 @@ find_package(Wt REQUIRED) find_package(Groove REQUIRED) add_executable(arbitrateor src/main.cpp src/WebInterface.cpp src/GroovePlayer.cpp src/ui/LoginInterface.cpp src/ui/PlayerInterface.cpp) -target_link_libraries(arbitrateor ${Wt_LIBRARIES} ${GROOVE_LIBRARY}) +target_link_libraries(arbitrateor ${Wt_LIBRARIES} ${GROOVE_LIBRARY} pthread) #TODO get threading links based on platform. install(TARGETS arbitrateor RUNTIME DESTINATION bin) diff --git a/src/GroovePlayer.cpp b/src/GroovePlayer.cpp index 56892cc..d80bab3 100644 --- a/src/GroovePlayer.cpp +++ b/src/GroovePlayer.cpp @@ -18,8 +18,6 @@ */ #include "GroovePlayer.h" -#include "db/User.h" -#include "db/AudioTrack.h" #include "db/UserAction.h" #include #include @@ -39,8 +37,29 @@ GroovePlayer::GroovePlayer(std::string dbFile) : sqliteConnection(dbFile) { Wt::log("info") << "Using Existing DB."; } + + grooveAudioScanner = new std::thread(grooveAudioScannerLoop); + grooveEvents = new std::thread(grooveEventLoop); } +std::vector GroovePlayer::getNextVoteBatch() +{ + //TODO +} + +void GroovePlayer::grooveEventLoop() +{ + //TODO +} + +void GroovePlayer::grooveAudioScannerLoop() +{ + //TODO +} + + + + //TODO:use this code when sending to UI. // Wt::WServer::instance()->postAll([]() { // Wt::WApplication* app = Wt::WApplication::instance(); diff --git a/src/GroovePlayer.h b/src/GroovePlayer.h index 702fd4c..831a1c8 100644 --- a/src/GroovePlayer.h +++ b/src/GroovePlayer.h @@ -22,6 +22,10 @@ #include #include +#include +#include +#include "db/User.h" +#include "db/AudioTrack.h" class GroovePlayer { @@ -37,6 +41,13 @@ private: Wt::Dbo::backend::Sqlite3 sqliteConnection; Wt::Dbo::Session sqlSession; + std::vector requestQueue; + std::thread* grooveEvents; + static void grooveEventLoop(); + std::vector getNextVoteBatch(); + std::thread* grooveAudioScanner; + static void grooveAudioScannerLoop(); + }; #endif // GROOVEPLAYER_H diff --git a/src/WebInterface.cpp b/src/WebInterface.cpp index 497e5b8..c3d8a50 100644 --- a/src/WebInterface.cpp +++ b/src/WebInterface.cpp @@ -80,3 +80,15 @@ void WebInterface::voteUpdateFromServer(User* userVoting, bool forSkip) priv_int->playerUI->tempText->setText(priv_int->playerUI->tempText->text()+"vote"); triggerUpdate(); } + +void WebInterface::voteNextSongFromServer(User* userVoting, AudioTrack* trackVoted) +{ + priv_int->playerUI->tempText->setText(priv_int->playerUI->tempText->text()+"nextvote"); + triggerUpdate(); +} + +void WebInterface::voteNextPollClosedFromServer() +{ + priv_int->playerUI->tempText->setText(priv_int->playerUI->tempText->text()+"voteclosed"); + triggerUpdate(); +} diff --git a/src/WebInterface.h b/src/WebInterface.h index 752a26e..2203e03 100644 --- a/src/WebInterface.h +++ b/src/WebInterface.h @@ -35,6 +35,8 @@ public: void songChangedFromServer(AudioTrack* nextTrack); void skipVotedFromServer(User* userRequestingToSkipCurrentTrack); void voteUpdateFromServer(User* userVoting, bool forSkip); + void voteNextSongFromServer(User* userVoting, AudioTrack* trackVoted); + void voteNextPollClosedFromServer(); private: struct internal; internal* priv_int = 0; -- GitLab