#pragma once #include #include struct FMusicQueueID { dpp::snowflake guild_id; uint32_t shard_id; }; class MusicQueue { public: MusicQueue(FMusicQueueID id, std::shared_ptr botCluster); void operator+=(FQueueElement operand); FQueueElement pop(int index); FQueueElement peek(int index); bool empty(); void clear(); std::list::iterator begin(); std::list::iterator end(); std::size_t size(); FMusicQueueID getId(); void play(); void markerCallback(); bool repeat; private: std::list queue; std::mutex mutex; std::mutex playMutex; FMusicQueueID id; std::shared_ptr botCluster; };