diff --git a/src/core/audio/PlaybackService.cpp b/src/core/audio/PlaybackService.cpp index 1b091d9c1..5dc4e1977 100755 --- a/src/core/audio/PlaybackService.cpp +++ b/src/core/audio/PlaybackService.cpp @@ -38,7 +38,7 @@ #include #include -#include +#include #include #include #include @@ -711,23 +711,23 @@ double PlaybackService::GetDuration() { return 0.0f; } -IRetainedTrack* PlaybackService::GetTrack(size_t index) { +ITrack* PlaybackService::GetTrack(size_t index) { std::unique_lock lock(this->playlistMutex); const size_t count = this->playlist.Count(); if (count && index < this->playlist.Count()) { - return new RetainedTrack(this->playlist.Get(index)); + return this->playlist.Get(index)->GetSdkValue(); } return nullptr; } -IRetainedTrack* PlaybackService::GetPlayingTrack() { +ITrack* PlaybackService::GetPlayingTrack() { std::unique_lock lock(this->playlistMutex); if (this->playingTrack) { - return new RetainedTrack(this->playingTrack); + return this->playingTrack->GetSdkValue(); } return nullptr; diff --git a/src/core/audio/PlaybackService.h b/src/core/audio/PlaybackService.h index 887a8a7eb..c6e404dfe 100755 --- a/src/core/audio/PlaybackService.h +++ b/src/core/audio/PlaybackService.h @@ -98,8 +98,8 @@ namespace musik { namespace core { namespace audio { virtual double GetPosition(); virtual void SetPosition(double seconds); virtual double GetDuration(); - virtual musik::core::sdk::IRetainedTrack* GetTrack(size_t index); - virtual musik::core::sdk::IRetainedTrack* GetPlayingTrack(); + virtual musik::core::sdk::ITrack* GetTrack(size_t index); + virtual musik::core::sdk::ITrack* GetPlayingTrack(); virtual void CopyFrom(const musik::core::sdk::ITrackList* source); virtual void Play(const musik::core::sdk::ITrackList* source, size_t index); virtual musik::core::sdk::ITrackListEditor* EditPlaylist(); diff --git a/src/core/core.vcxproj b/src/core/core.vcxproj index 1cf7e93ba..98c81a029 100755 --- a/src/core/core.vcxproj +++ b/src/core/core.vcxproj @@ -117,7 +117,6 @@ - @@ -175,7 +174,6 @@ - @@ -219,7 +217,6 @@ - diff --git a/src/core/core.vcxproj.filters b/src/core/core.vcxproj.filters index fee925104..33648e023 100755 --- a/src/core/core.vcxproj.filters +++ b/src/core/core.vcxproj.filters @@ -124,9 +124,6 @@ src\audio - - src\library\track - src\audio @@ -288,9 +285,6 @@ src\sdk - - src\library\track - src\audio @@ -447,9 +441,6 @@ src\sdk\library - - src\sdk\library - src\sdk\audio diff --git a/src/core/library/Indexer.cpp b/src/core/library/Indexer.cpp index a78a16fef..c254e33d2 100644 --- a/src/core/library/Indexer.cpp +++ b/src/core/library/Indexer.cpp @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include diff --git a/src/core/library/LocalSimpleDataProvider.cpp b/src/core/library/LocalSimpleDataProvider.cpp index 3d29317c7..448c08424 100644 --- a/src/core/library/LocalSimpleDataProvider.cpp +++ b/src/core/library/LocalSimpleDataProvider.cpp @@ -46,7 +46,6 @@ #include #include #include -#include #include #define TAG "LocalSimpleDataProvider" @@ -141,7 +140,7 @@ ITrackList* LocalSimpleDataProvider::QueryTracks(const char* query, int limit, i return nullptr; } -IRetainedTrack* LocalSimpleDataProvider::QueryTrackById(int64_t trackId) { +ITrack* LocalSimpleDataProvider::QueryTrackById(int64_t trackId) { try { TrackPtr target(new LibraryTrack(trackId, this->library)); @@ -151,7 +150,7 @@ IRetainedTrack* LocalSimpleDataProvider::QueryTrackById(int64_t trackId) { this->library->Enqueue(search, ILibrary::QuerySynchronous); if (search->GetStatus() == IQuery::Finished) { - return new RetainedTrack(target); + return target->GetSdkValue(); } } catch (...) { @@ -161,7 +160,7 @@ IRetainedTrack* LocalSimpleDataProvider::QueryTrackById(int64_t trackId) { return nullptr; } -IRetainedTrack* LocalSimpleDataProvider::QueryTrackByExternalId(const char* externalId) { +ITrack* LocalSimpleDataProvider::QueryTrackByExternalId(const char* externalId) { if (strlen(externalId)) { try { TrackPtr target(new LibraryTrack(0, this->library)); @@ -173,7 +172,7 @@ IRetainedTrack* LocalSimpleDataProvider::QueryTrackByExternalId(const char* exte this->library->Enqueue(search, ILibrary::QuerySynchronous); if (search->GetStatus() == IQuery::Finished) { - return new RetainedTrack(target); + return target->GetSdkValue(); } } catch (...) { diff --git a/src/core/library/LocalSimpleDataProvider.h b/src/core/library/LocalSimpleDataProvider.h index 0c0e558fc..c00634e87 100644 --- a/src/core/library/LocalSimpleDataProvider.h +++ b/src/core/library/LocalSimpleDataProvider.h @@ -51,10 +51,10 @@ namespace musik { namespace core { namespace db { namespace local { int limit = -1, int offset = 0) override; - virtual musik::core::sdk::IRetainedTrack* + virtual musik::core::sdk::ITrack* QueryTrackById(int64_t trackId) override; - virtual musik::core::sdk::IRetainedTrack* + virtual musik::core::sdk::ITrack* QueryTrackByExternalId(const char* externalId) override; virtual musik::core::sdk::ITrackList* diff --git a/src/core/library/query/local/TrackListQueryBase.h b/src/core/library/query/local/TrackListQueryBase.h index 81a0364f1..ac6914ceb 100755 --- a/src/core/library/query/local/TrackListQueryBase.h +++ b/src/core/library/query/local/TrackListQueryBase.h @@ -93,10 +93,6 @@ namespace musik { namespace core { namespace db { namespace local { return this->wrapped->Count(); } - virtual musik::core::sdk::IRetainedTrack* GetRetainedTrack(size_t index) const { - return this->wrapped->GetRetainedTrack(index); - } - virtual int64_t GetId(size_t index) const { return this->wrapped->GetId(index); } diff --git a/src/core/library/track/RetainedTrack.cpp b/src/core/library/track/RetainedTrack.cpp deleted file mode 100644 index b201561b9..000000000 --- a/src/core/library/track/RetainedTrack.cpp +++ /dev/null @@ -1,85 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2007-2017 musikcube team -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// * Neither the name of the author nor the names of other contributors may -// be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////////// - -#include "pch.hpp" -#include "RetainedTrack.h" - -using namespace musik::core; - -/* * * * RetainedTrack * * * */ - -RetainedTrack::RetainedTrack(TrackPtr track) { - this->count = 1; - this->track = track; -} - -RetainedTrack::~RetainedTrack() { -} - -void RetainedTrack::Release() { - int c = this->count.fetch_sub(1); - if (c == 1) { /* value before fetch */ - this->count = 0; - this->track.reset(); - delete this; - } -} - -void RetainedTrack::Retain() { - ++this->count; -} - -int RetainedTrack::GetString(const char* key, char* dst, int size) { - return track->GetString(key, dst, size); -} - -int RetainedTrack::Uri(char* dst, int size) { - return track->Uri(dst, size); -} - -long long RetainedTrack::GetInt64(const char* key, long long defaultValue) { - return track->GetInt64(key, defaultValue); -} - -int RetainedTrack::GetInt32(const char* key, unsigned int defaultValue) { - return track->GetInt32(key, defaultValue); -} - -double RetainedTrack::GetDouble(const char* key, double defaultValue) { - return track->GetDouble(key, defaultValue); -} - -int64_t RetainedTrack::GetId() { - return track->GetId(); -} \ No newline at end of file diff --git a/src/core/library/track/RetainedTrack.h b/src/core/library/track/RetainedTrack.h deleted file mode 100644 index df111ed20..000000000 --- a/src/core/library/track/RetainedTrack.h +++ /dev/null @@ -1,64 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2007-2017 musikcube team -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// * Neither the name of the author nor the names of other contributors may -// be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////////// - -#include -#include "Track.h" -#include - -namespace musik { namespace core { - - class RetainedTrack : public musik::core::sdk::IRetainedTrack { - public: - RetainedTrack(TrackPtr track); - virtual ~RetainedTrack(); - - /* IRetainedTrack */ - virtual void Release(); - virtual void Retain(); - - /* ITrack */ - virtual int64_t GetId(); - virtual int GetString(const char* key, char* dst, int size); - virtual long long GetInt64(const char* key, long long defaultValue = 0LL); - virtual int GetInt32(const char* key, unsigned int defaultValue = 0); - virtual double GetDouble(const char* key, double defaultValue = 0.0f); - virtual int Uri(char* dst, int size); - - private: - std::atomic count; - TrackPtr track; - }; - -} } - diff --git a/src/core/library/track/Track.cpp b/src/core/library/track/Track.cpp index 072ccd5ef..f577b7eff 100644 --- a/src/core/library/track/Track.cpp +++ b/src/core/library/track/Track.cpp @@ -39,6 +39,70 @@ using namespace musik::core; +/* * * * SdkWrapper * * * */ +class SdkWrapper : public Track { + public: + SdkWrapper(TrackPtr track) { + this->track = track; + this->count = 0; + } + + virtual ~SdkWrapper() { + + } + + virtual void Retain() { + ++this->count; + } + + virtual void Release() { + int c = this->count.fetch_sub(1); + if (c == 1) { /* fetched before sub */ + this->count = 0; + this->track.reset(); + delete this; + } + } + + virtual int GetString(const char* key, char* dst, int size) { + return track->GetString(key, dst, size); + } + + virtual long long GetInt64(const char* key, long long defaultValue) { + return track->GetInt64(key, defaultValue); + } + + virtual int GetInt32(const char* key, unsigned int defaultValue) { + return track->GetInt32(key, defaultValue); + } + + virtual double GetDouble(const char* key, double defaultValue) { + return track->GetDouble(key, defaultValue); + } + + virtual int Uri(char* dst, int size) { + return track->Uri(dst, size); + } + + /* pure virtual methods defined by Track, but not defined in ITrack. therefore, + these methods cannot be called by the SDK, and should throw. */ + #define NO_IMPL throw std::runtime_error("not implemented"); + virtual void SetValue(const char* key, const char* value) override { NO_IMPL } + virtual void ClearValue(const char* key) override { NO_IMPL } + virtual void SetThumbnail(const char *data, long size) override { NO_IMPL } + virtual void SetId(int64_t id) override { NO_IMPL } + virtual std::string GetString(const char* metakey) override { NO_IMPL } + virtual std::string Uri() override { NO_IMPL } + virtual MetadataIteratorRange GetValues(const char* metakey) override { NO_IMPL } + virtual MetadataIteratorRange GetAllValues() override { NO_IMPL } + virtual TrackPtr Copy() override { NO_IMPL } + #undef NO_IMPL + + private: + std::atomic count; + std::shared_ptr track; +}; + /* * * * Track * * * */ Track::~Track() { @@ -57,6 +121,18 @@ int Track::LibraryId() { return 0; } +void Track::Retain() { + /* nothing. SdkWrapper implements as necessary */ +} + +void Track::Release() { + /* same as Retain() */ +} + +musik::core::sdk::ITrack* Track::GetSdkValue() { + return new SdkWrapper(shared_from_this()); +} + /* * * * TagStore * * * */ template @@ -98,4 +174,4 @@ void TagStore::Release() { void TagStore::Retain() { ++this->count; -} \ No newline at end of file +} diff --git a/src/core/library/track/Track.h b/src/core/library/track/Track.h index 7bc5ee8e4..5c1afeb3d 100644 --- a/src/core/library/track/Track.h +++ b/src/core/library/track/Track.h @@ -47,22 +47,19 @@ namespace musik { namespace core { class Track; typedef std::shared_ptr TrackPtr; - class Track : public musik::core::sdk::ITrack { + class Track : + public musik::core::sdk::ITrack, + public std::enable_shared_from_this + { public: typedef std::multimap MetadataMap; typedef std::pair MetadataIteratorRange; virtual ~Track(); - virtual int64_t GetId(); - virtual void SetId(int64_t id) = 0; - virtual musik::core::ILibraryPtr Library(); virtual int LibraryId(); - virtual std::string GetString(const char* metakey) = 0; - virtual std::string Uri() = 0; - /* ITrack is a ready only interface; we use the ITagStore interface for writing. we replicate the interface here, and have TagStore pass through to us */ @@ -71,6 +68,9 @@ namespace musik { namespace core { virtual void SetThumbnail(const char *data, long size) = 0; /* ITrack */ + virtual void Retain(); + virtual void Release(); + virtual int64_t GetId(); virtual int GetString(const char* key, char* dst, int size) = 0; virtual long long GetInt64(const char* key, long long defaultValue = 0LL) = 0; virtual int GetInt32(const char* key, unsigned int defaultValue = 0) = 0; @@ -78,9 +78,15 @@ namespace musik { namespace core { virtual int Uri(char* dst, int size) = 0; /* implementation specific */ + virtual void SetId(int64_t id) = 0; + virtual std::string GetString(const char* metakey) = 0; + virtual std::string Uri() = 0; virtual MetadataIteratorRange GetValues(const char* metakey) = 0; virtual MetadataIteratorRange GetAllValues() = 0; virtual TrackPtr Copy() = 0; + + /* for SDK interop */ + ITrack* GetSdkValue(); }; class TagStore : public musik::core::sdk::ITagStore { diff --git a/src/core/library/track/TrackList.cpp b/src/core/library/track/TrackList.cpp index c0c3d85b5..895221571 100755 --- a/src/core/library/track/TrackList.cpp +++ b/src/core/library/track/TrackList.cpp @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include #include #include @@ -148,12 +148,10 @@ TrackPtr TrackList::Get(size_t index) const { return TrackPtr(); } -IRetainedTrack* TrackList::GetRetainedTrack(size_t index) const { - return new RetainedTrack(this->Get(index)); -} - ITrack* TrackList::GetTrack(size_t index) const { - return this->Get(index).get(); + auto track = this->Get(index).get(); + track->Retain(); + return track; } int64_t TrackList::GetId(size_t index) const { diff --git a/src/core/library/track/TrackList.h b/src/core/library/track/TrackList.h index de2695c4d..657597658 100755 --- a/src/core/library/track/TrackList.h +++ b/src/core/library/track/TrackList.h @@ -55,7 +55,6 @@ namespace musik { namespace core { /* ITrackList */ virtual size_t Count() const; - virtual musik::core::sdk::IRetainedTrack* GetRetainedTrack(size_t index) const; virtual int64_t GetId(size_t index) const; virtual int IndexOf(int64_t id) const; virtual musik::core::sdk::ITrack* GetTrack(size_t index) const; diff --git a/src/core/sdk/IPlaybackService.h b/src/core/sdk/IPlaybackService.h index 55fa61363..dbfbd46ab 100644 --- a/src/core/sdk/IPlaybackService.h +++ b/src/core/sdk/IPlaybackService.h @@ -35,7 +35,7 @@ #pragma once #include "constants.h" -#include "IRetainedTrack.h" +#include "ITrack.h" #include "ITrackList.h" #include "ITrackListEditor.h" @@ -72,10 +72,10 @@ namespace musik { namespace core { namespace sdk { virtual size_t GetIndex() = 0; virtual size_t Count() = 0; - virtual IRetainedTrack* GetTrack(size_t index) = 0; + virtual ITrack* GetTrack(size_t index) = 0; /* sdk v2 */ - virtual IRetainedTrack* GetPlayingTrack() = 0; + virtual ITrack* GetPlayingTrack() = 0; /* sdk v3 */ virtual void CopyFrom(const ITrackList* trackList) = 0; diff --git a/src/core/sdk/IRetainedTrack.h b/src/core/sdk/IRetainedTrack.h deleted file mode 100644 index 3da8f8a83..000000000 --- a/src/core/sdk/IRetainedTrack.h +++ /dev/null @@ -1,48 +0,0 @@ -////////////////////////////////////////////////////////////////////////////// -// -// Copyright (c) 2007-2017 musikcube team -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// * Neither the name of the author nor the names of other contributors may -// be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -////////////////////////////////////////////////////////////////////////////// - -#pragma once - -#include "ITrack.h" - -namespace musik { namespace core { namespace sdk { - - class IRetainedTrack : public ITrack { - public: - virtual void Release() = 0; - virtual void Retain() = 0; - }; - -} } } - diff --git a/src/core/sdk/ISimpleDataProvider.h b/src/core/sdk/ISimpleDataProvider.h index 80d70dd96..52e8398dd 100644 --- a/src/core/sdk/ISimpleDataProvider.h +++ b/src/core/sdk/ISimpleDataProvider.h @@ -37,7 +37,7 @@ #include "ITrackList.h" #include "IValueList.h" #include "IMapList.h" -#include "IRetainedTrack.h" +#include "ITrack.h" namespace musik { namespace core { namespace sdk { @@ -48,9 +48,9 @@ namespace musik { namespace core { namespace sdk { int limit = -1, int offset = 0) = 0; - virtual IRetainedTrack* QueryTrackById(int64_t trackId) = 0; + virtual ITrack* QueryTrackById(int64_t trackId) = 0; - virtual IRetainedTrack* QueryTrackByExternalId(const char* externalId) = 0; + virtual ITrack* QueryTrackByExternalId(const char* externalId) = 0; virtual ITrackList* QueryTracksByCategory( const char* categoryType, diff --git a/src/core/sdk/ITrack.h b/src/core/sdk/ITrack.h index c069cc1da..f761d38f3 100644 --- a/src/core/sdk/ITrack.h +++ b/src/core/sdk/ITrack.h @@ -40,6 +40,8 @@ namespace musik { namespace core { namespace sdk { class ITrack { public: + virtual void Retain() = 0; + virtual void Release() = 0; virtual int64_t GetId() = 0; virtual int GetString(const char* key, char* dst, int size) = 0; virtual long long GetInt64(const char* key, long long defaultValue = 0LL) = 0; diff --git a/src/core/sdk/ITrackList.h b/src/core/sdk/ITrackList.h index f366b31d9..697c3aff8 100644 --- a/src/core/sdk/ITrackList.h +++ b/src/core/sdk/ITrackList.h @@ -35,20 +35,16 @@ #pragma once #include -#include "IRetainedTrack.h" +#include "ITrack.h" namespace musik { namespace core { namespace sdk { class ITrackList { public: - /* sdk v1 */ virtual void Release() = 0; virtual size_t Count() const = 0; - virtual IRetainedTrack* GetRetainedTrack(size_t index) const = 0; virtual int64_t GetId(size_t index) const = 0; virtual int IndexOf(int64_t id) const = 0; - - /* sdk v3 */ virtual ITrack* GetTrack(size_t index) const = 0; }; diff --git a/src/plugins/websocket_remote/HttpServer.cpp b/src/plugins/websocket_remote/HttpServer.cpp index 288a45a7c..c38bf9674 100644 --- a/src/plugins/websocket_remote/HttpServer.cpp +++ b/src/plugins/websocket_remote/HttpServer.cpp @@ -38,7 +38,7 @@ #include "Transcoder.h" #include "TranscodingDataStream.h" -#include +#include #include #include @@ -337,7 +337,7 @@ int HttpServer::HandleRequest( boost::split(parts, urlStr, boost::is_any_of("/")); if (parts.size() > 0) { if (parts.at(0) == fragment::audio && parts.size() == 3) { - IRetainedTrack* track = nullptr; + ITrack* track = nullptr; bool byExternalId = (parts.at(1) == fragment::external_id); if (byExternalId) { diff --git a/src/plugins/websocket_remote/WebSocketServer.cpp b/src/plugins/websocket_remote/WebSocketServer.cpp index dfb4ccdfb..284397801 100644 --- a/src/plugins/websocket_remote/WebSocketServer.cpp +++ b/src/plugins/websocket_remote/WebSocketServer.cpp @@ -484,13 +484,13 @@ bool WebSocketServer::RespondWithTracks( else { json data = json::array(); - IRetainedTrack* track = nullptr; + ITrack* track = nullptr; for (size_t i = 0; i < tracks->Count(); i++) { if (idsOnly) { data.push_back({ {key::id, tracks->GetId(i) } }); } else { - track = tracks->GetRetainedTrack(i); + track = tracks->GetTrack(i); data.push_back(this->ReadTrackMetadata(track)); } @@ -563,8 +563,8 @@ void WebSocketServer::RespondWithPlayQueueTracks(connection_hdl connection, json }); } else { - static auto deleter = [](IRetainedTrack* track) { track->Release(); }; - std::vector> tracks; + static auto deleter = [](ITrack* track) { track->Release(); }; + std::vector> tracks; /* edit the playlist so it can be changed while we're getting the tracks out of it. */ @@ -574,7 +574,7 @@ void WebSocketServer::RespondWithPlayQueueTracks(connection_hdl connection, json int to = std::min(trackCount, offset + limit); for (int i = offset; i < to; i++) { - tracks.push_back(std::shared_ptr(context.playback->GetTrack(i), deleter)); + tracks.push_back(std::shared_ptr(context.playback->GetTrack(i), deleter)); } editor->Release(); @@ -908,7 +908,7 @@ void WebSocketServer::BroadcastPlayQueueChanged() { this->Broadcast(broadcast::play_queue_changed, options); } -json WebSocketServer::WebSocketServer::ReadTrackMetadata(IRetainedTrack* track) { +json WebSocketServer::WebSocketServer::ReadTrackMetadata(ITrack* track) { return { { key::id, track->GetId() }, { key::external_id, GetMetadataString(track, key::external_id) }, @@ -937,7 +937,7 @@ void WebSocketServer::BuildPlaybackOverview(json& options) { options[key::playing_duration] = context.playback->GetDuration(); options[key::playing_current_time] = context.playback->GetPosition(); - IRetainedTrack* track = context.playback->GetPlayingTrack(); + ITrack* track = context.playback->GetPlayingTrack(); if (track) { options[key::playing_track] = this->ReadTrackMetadata(track); track->Release(); diff --git a/src/plugins/websocket_remote/WebSocketServer.h b/src/plugins/websocket_remote/WebSocketServer.h index 3688a9ac5..87f8ebec0 100644 --- a/src/plugins/websocket_remote/WebSocketServer.h +++ b/src/plugins/websocket_remote/WebSocketServer.h @@ -109,7 +109,7 @@ class WebSocketServer { using ConnectionList = std::map>; using json = nlohmann::json; using ITrackList = musik::core::sdk::ITrackList; - using IRetainedTrack = musik::core::sdk::IRetainedTrack; + using ITrack = musik::core::sdk::ITrack; /* vars */ Context& context; @@ -155,7 +155,7 @@ class WebSocketServer { void GetLimitAndOffset(json& options, int& limit, int& offset); ITrackList* QueryTracksByCategory(json& request, int& limit, int& offset); - json ReadTrackMetadata(IRetainedTrack* track); + json ReadTrackMetadata(ITrack* track); void BuildPlaybackOverview(json& options); void OnOpen(connection_hdl connection);