mirror of
https://github.com/clangen/musikcube.git
synced 2025-03-14 13:21:13 +00:00
Updated IMetadataMap's interface with the same type-related changes as
ITrack. May s well while we're bumping the SDK version. This allows us to remove some type conversion code from the websocket remote's plugin.
This commit is contained in:
parent
bde694e9a8
commit
6188fce615
@ -673,7 +673,7 @@ class PlaybackRemote : public IPlaybackRemote {
|
||||
{ key::title, album->GetDescription() },
|
||||
{ key::id, album->GetId() },
|
||||
{ key::thumbnail_id, 0 }, /* note: thumbnails aren't supported at the album level yet */
|
||||
{ key::album_artist_id, this->GetMetadataInt64(album, key::album_artist_id) },
|
||||
{ key::album_artist_id, album->GetInt64(key::album_artist_id.c_str()) },
|
||||
{ key::album_artist, this->GetMetadataString(album, key::album_artist) }
|
||||
});
|
||||
|
||||
@ -852,14 +852,14 @@ class PlaybackRemote : public IPlaybackRemote {
|
||||
{ key::id, track->GetId() },
|
||||
{ key::title, this->GetMetadataString(track, key::title) },
|
||||
{ key::album, this->GetMetadataString(track, key::album) },
|
||||
{ key::album_id, this->GetMetadataInt64(track, key::album_id) },
|
||||
{ key::album_id, track->GetInt64(key::album_id.c_str()) },
|
||||
{ key::album_artist, this->GetMetadataString(track, key::album_artist) },
|
||||
{ key::album_artist_id, this->GetMetadataInt64(track, key::album_artist_id) },
|
||||
{ key::album_artist_id, track->GetInt64(key::album_artist_id.c_str()) },
|
||||
{ key::artist, this->GetMetadataString(track, key::artist) },
|
||||
{ key::artist_id, this->GetMetadataInt64(track, key::artist_id) },
|
||||
{ key::artist_id, track->GetInt64(key::artist_id.c_str()) },
|
||||
{ key::genre, this->GetMetadataString(track, key::genre) },
|
||||
{ key::genre_id, this->GetMetadataInt64(track, key::genre_id) },
|
||||
{ key::thumbnail_id, this->GetMetadataInt64(track, key::thumbnail_id) },
|
||||
{ key::genre_id, track->GetInt64(key::genre_id.c_str()) },
|
||||
{ key::thumbnail_id, track->GetInt64(key::thumbnail_id.c_str()) },
|
||||
};
|
||||
}
|
||||
|
||||
@ -896,16 +896,6 @@ class PlaybackRemote : public IPlaybackRemote {
|
||||
return std::string(threadLocalBuffer);
|
||||
}
|
||||
|
||||
template <typename MetadataT>
|
||||
unsigned long long GetMetadataInt64(MetadataT* metadata, const std::string& idKey) {
|
||||
try {
|
||||
return std::stoull(this->GetMetadataString(metadata, idKey));
|
||||
}
|
||||
catch (...) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
void ThreadProc() {
|
||||
try {
|
||||
if (preferences->GetBool("debug")) {
|
||||
|
@ -57,6 +57,11 @@ namespace {
|
||||
virtual void Release() { this->wrapped.reset(); }
|
||||
virtual unsigned long long GetId() { return this->wrapped->GetId(); }
|
||||
virtual int GetValue(const char* key, char* dst, int size) { return this->wrapped->GetValue(key, dst, size); }
|
||||
virtual unsigned long long GetUint64(const char* key, unsigned long long defaultValue) { return this->wrapped->GetUint64(key, defaultValue); }
|
||||
virtual long long GetInt64(const char* key, long long defaultValue) { return this->wrapped->GetInt64(key, defaultValue); }
|
||||
virtual unsigned long GetUint32(const char* key, unsigned long defaultValue) { return this->wrapped->GetUint32(key, defaultValue); }
|
||||
virtual long GetInt32(const char* key, unsigned int defaultValue) { return this->wrapped->GetInt32(key, defaultValue); }
|
||||
virtual double GetDouble(const char* key, double defaultValue) { return this->wrapped->GetDouble(key, defaultValue); }
|
||||
virtual const char* GetDescription() { return this->wrapped->GetDescription(); }
|
||||
virtual const char* GetType() { return this->wrapped->GetType(); }
|
||||
MetadataMapPtr wrapped;
|
||||
@ -98,6 +103,39 @@ int MetadataMap::GetValue(const char* key, char* dst, int size) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string MetadataMap::GetValue(const char* key) {
|
||||
auto it = metadata.find(key);
|
||||
if (it != metadata.end()) {
|
||||
return it->second;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
unsigned long long MetadataMap::GetUint64(const char* key, unsigned long long defaultValue) {
|
||||
try { return std::stoull(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
long long MetadataMap::GetInt64(const char* key, long long defaultValue) {
|
||||
try { return std::stoll(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
unsigned long MetadataMap::GetUint32(const char* key, unsigned long defaultValue) {
|
||||
try { return std::stoul(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
long MetadataMap::GetInt32(const char* key, unsigned int defaultValue) {
|
||||
try { return std::stol(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
double MetadataMap::GetDouble(const char* key, double defaultValue) {
|
||||
try { return std::stod(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
const char* MetadataMap::GetDescription() {
|
||||
return this->description.c_str();
|
||||
}
|
||||
|
@ -56,12 +56,19 @@ namespace musik { namespace core {
|
||||
/* IMetadataMap */
|
||||
virtual void Release();
|
||||
virtual unsigned long long GetId();
|
||||
virtual int GetValue(const char* key, char* dst, int size);
|
||||
virtual const char* GetDescription();
|
||||
virtual const char* GetType();
|
||||
|
||||
virtual int GetValue(const char* key, char* dst, int size);
|
||||
virtual unsigned long long GetUint64(const char* key, unsigned long long defaultValue = 0ULL);
|
||||
virtual long long GetInt64(const char* key, long long defaultValue = 0LL);
|
||||
virtual unsigned long GetUint32(const char* key, unsigned long defaultValue = 0);
|
||||
virtual long GetInt32(const char* key, unsigned int defaultValue = 0);
|
||||
virtual double GetDouble(const char* key, double defaultValue = 0.0f);
|
||||
|
||||
/* implementation specific */
|
||||
void SetValue(const char* key, const std::string& value);
|
||||
std::string GetValue(const char* key);
|
||||
musik::core::sdk::IMetadataMap* GetSdkValue();
|
||||
|
||||
private:
|
||||
|
@ -88,32 +88,27 @@ std::string IndexerTrack::GetValue(const char* metakey) {
|
||||
}
|
||||
|
||||
unsigned long long IndexerTrack::GetUint64(const char* key, unsigned long long defaultValue) {
|
||||
try { return std::stoull(GetValue(key)); }
|
||||
catch (...) { }
|
||||
try { return std::stoull(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
long long IndexerTrack::GetInt64(const char* key, long long defaultValue) {
|
||||
try { return std::stoll(GetValue(key)); }
|
||||
catch (...) {}
|
||||
try { return std::stoll(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
unsigned long IndexerTrack::GetUint32(const char* key, unsigned long defaultValue) {
|
||||
try { return std::stoul(GetValue(key)); }
|
||||
catch (...) {}
|
||||
try { return std::stoul(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
long IndexerTrack::GetInt32(const char* key, unsigned int defaultValue) {
|
||||
try { return std::stol(GetValue(key)); }
|
||||
catch (...) {}
|
||||
try { return std::stol(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
double IndexerTrack::GetDouble(const char* key, double defaultValue) {
|
||||
try { return std::stod(GetValue(key)); }
|
||||
catch (...) {}
|
||||
try { return std::stod(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
|
@ -72,32 +72,27 @@ std::string LibraryTrack::GetValue(const char* metakey) {
|
||||
}
|
||||
|
||||
unsigned long long LibraryTrack::GetUint64(const char* key, unsigned long long defaultValue) {
|
||||
try { return std::stoull(GetValue(key)); }
|
||||
catch (...) {}
|
||||
try { return std::stoull(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
long long LibraryTrack::GetInt64(const char* key, long long defaultValue) {
|
||||
try { return std::stoll(GetValue(key)); }
|
||||
catch (...) {}
|
||||
try { return std::stoll(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
unsigned long LibraryTrack::GetUint32(const char* key, unsigned long defaultValue) {
|
||||
try { return std::stoul(GetValue(key)); }
|
||||
catch (...) {}
|
||||
try { return std::stoul(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
long LibraryTrack::GetInt32(const char* key, unsigned int defaultValue) {
|
||||
try { return std::stol(GetValue(key)); }
|
||||
catch (...) {}
|
||||
try { return std::stol(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
double LibraryTrack::GetDouble(const char* key, double defaultValue) {
|
||||
try { return std::stod(GetValue(key)); }
|
||||
catch (...) {}
|
||||
try { return std::stod(GetValue(key)); } catch (...) { }
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
|
@ -41,6 +41,11 @@ namespace musik { namespace core { namespace sdk {
|
||||
virtual void Release() = 0;
|
||||
virtual unsigned long long GetId() = 0;
|
||||
virtual int GetValue(const char* key, char* dst, int size) = 0;
|
||||
virtual unsigned long long GetUint64(const char* key, unsigned long long defaultValue = 0ULL) = 0;
|
||||
virtual long long GetInt64(const char* key, long long defaultValue = 0LL) = 0;
|
||||
virtual unsigned long GetUint32(const char* key, unsigned long defaultValue = 0) = 0;
|
||||
virtual long GetInt32(const char* key, unsigned int defaultValue = 0) = 0;
|
||||
virtual double GetDouble(const char* key, double defaultValue = 0.0f) = 0;
|
||||
virtual const char* GetDescription() = 0;
|
||||
virtual const char* GetType() = 0;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user