#pragma once #ifndef _MUSICQUEUE_HPP_ #define _MUSICQUEUE_HPP_ #include #include #include #include namespace bumbleBee { class MusicQueueElement { public: MusicQueueElement(std::string id, std::string url) : id(id), url(url) {} std::string id; std::string url; }; class MusicQueue { public: MusicQueue() { currentPlayingPosition = queue.begin(); repeat = false; } void enqueue(std::shared_ptr Element); std::shared_ptr dequeue(); std::weak_ptr nowplaying(); std::weak_ptr next_music(); std::weak_ptr jump_to_index(int idx); bool repeat; std::function on_queue_added; private: std::condition_variable queueItemAdded; std::mutex queueMutex; std::list> queue; std::list>::iterator currentPlayingPosition; }; } #endif