diff --git a/CMakeLists.txt b/CMakeLists.txt index 67fbec597b1ec11f1881fa4495bde57b882202b7..d14dccd3bff565dfee96f5ff9faa093519896df0 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 56892cca1920cb29e7f5ff8f02fa88865b20eb16..d80bab3536d23ca539250bbddf030f0161559b66 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 702fd4c2d387ef70a2bf7eee28ba3ab51f2e9f1b..831a1c8d946b1030ce9451caf57e398d3fc4a52b 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 497e5b862912b26569b27e6b189ecbe7e08ad32b..c3d8a50228ab4e0be3f1848e8d6bb6518477c1aa 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 752a26e668dd9baa942c610ec58feff4cd7d23ff..2203e0303f5e5ffb8ebedd36782962e195f7d517 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;