diff --git a/src/libs/cover/CMakeLists.txt b/src/libs/cover/CMakeLists.txt index a675db76..12627c9e 100644 --- a/src/libs/cover/CMakeLists.txt +++ b/src/libs/cover/CMakeLists.txt @@ -1,6 +1,6 @@ add_library(lmscover SHARED - impl/CoverArtGrabber.cpp + impl/CoverService.cpp ) target_include_directories(lmscover INTERFACE diff --git a/src/libs/cover/impl/CoverArtGrabber.cpp b/src/libs/cover/impl/CoverService.cpp similarity index 86% rename from src/libs/cover/impl/CoverArtGrabber.cpp rename to src/libs/cover/impl/CoverService.cpp index 58fff328..af768802 100644 --- a/src/libs/cover/impl/CoverArtGrabber.cpp +++ b/src/libs/cover/impl/CoverService.cpp @@ -17,7 +17,7 @@ * along with LMS. If not, see . */ -#include "CoverArtGrabber.hpp" +#include "CoverService.hpp" #include "av/IAudioFile.hpp" @@ -28,10 +28,10 @@ #if LMS_SUPPORT_IMAGE_STB #include "stb/RawImage.hpp" -using RawImage = CoverArt::STB::RawImage; +using RawImage = Cover::STB::RawImage; #elif LMS_SUPPORT_IMAGE_GM #include "graphicsmagick/RawImage.hpp" -using RawImage = CoverArt::GraphicsMagick::RawImage; +using RawImage = Cover::GraphicsMagick::RawImage; #endif #include "utils/IConfig.hpp" @@ -77,7 +77,7 @@ namespace } } -namespace CoverArt { +namespace Cover { static bool @@ -86,13 +86,13 @@ isFileSupported(const std::filesystem::path& file, const std::vector -createGrabber(Database::Db& db, const std::filesystem::path& execPath, const std::filesystem::path& defaultCoverPath) +std::unique_ptr +createCoverService(Database::Db& db, const std::filesystem::path& execPath, const std::filesystem::path& defaultCoverPath) { - return std::make_unique(db, execPath, defaultCoverPath); + return std::make_unique(db, execPath, defaultCoverPath); } -Grabber::Grabber(Database::Db& db, +CoverService::CoverService(Database::Db& db, const std::filesystem::path& execPath, const std::filesystem::path& defaultCoverPath) : _db {db} @@ -124,7 +124,7 @@ Grabber::Grabber(Database::Db& db, } std::unique_ptr -Grabber::getFromAvMediaFile(const Av::IAudioFile& input, ImageSize width) const +CoverService::getFromAvMediaFile(const Av::IAudioFile& input, ImageSize width) const { std::unique_ptr image; @@ -149,7 +149,7 @@ Grabber::getFromAvMediaFile(const Av::IAudioFile& input, ImageSize width) const } std::unique_ptr -Grabber::getFromCoverFile(const std::filesystem::path& p, ImageSize width) const +CoverService::getFromCoverFile(const std::filesystem::path& p, ImageSize width) const { std::unique_ptr image; @@ -168,7 +168,7 @@ Grabber::getFromCoverFile(const std::filesystem::path& p, ImageSize width) const } std::shared_ptr -Grabber::getDefault(ImageSize width) +CoverService::getDefault(ImageSize width) { { std::shared_lock lock {_cacheMutex}; @@ -192,7 +192,7 @@ Grabber::getDefault(ImageSize width) } std::unique_ptr -Grabber::getFromDirectory(const std::filesystem::path& directory, ImageSize width) const +CoverService::getFromDirectory(const std::filesystem::path& directory, ImageSize width) const { const std::multimap coverPaths {getCoverPaths(directory)}; @@ -231,7 +231,7 @@ Grabber::getFromDirectory(const std::filesystem::path& directory, ImageSize widt } std::unique_ptr -Grabber::getFromSameNamedFile(const std::filesystem::path& filePath, ImageSize width) const +CoverService::getFromSameNamedFile(const std::filesystem::path& filePath, ImageSize width) const { std::unique_ptr res; @@ -252,7 +252,7 @@ Grabber::getFromSameNamedFile(const std::filesystem::path& filePath, ImageSize w } bool -Grabber::checkCoverFile(const std::filesystem::path& filePath) const +CoverService::checkCoverFile(const std::filesystem::path& filePath) const { std::error_code ec; @@ -275,7 +275,7 @@ Grabber::checkCoverFile(const std::filesystem::path& filePath) const } std::multimap -Grabber::getCoverPaths(const std::filesystem::path& directoryPath) const +CoverService::getCoverPaths(const std::filesystem::path& directoryPath) const { std::multimap res; std::error_code ec; @@ -296,7 +296,7 @@ Grabber::getCoverPaths(const std::filesystem::path& directoryPath) const } std::unique_ptr -Grabber::getFromTrack(const std::filesystem::path& p, ImageSize width) const +CoverService::getFromTrack(const std::filesystem::path& p, ImageSize width) const { std::unique_ptr image; @@ -313,13 +313,13 @@ Grabber::getFromTrack(const std::filesystem::path& p, ImageSize width) const } std::shared_ptr -Grabber::getFromTrack(Database::TrackId trackId, ImageSize width) +CoverService::getFromTrack(Database::TrackId trackId, ImageSize width) { return getFromTrack(_db.getTLSSession(), trackId, width, true /* allow release fallback*/); } std::shared_ptr -Grabber::getFromTrack(Database::Session& dbSession, Database::TrackId trackId, ImageSize width, bool allowReleaseFallback) +CoverService::getFromTrack(Database::Session& dbSession, Database::TrackId trackId, ImageSize width, bool allowReleaseFallback) { using namespace Database; @@ -357,7 +357,7 @@ Grabber::getFromTrack(Database::Session& dbSession, Database::TrackId trackId, I } std::shared_ptr -Grabber::getFromRelease(Database::ReleaseId releaseId, ImageSize width) +CoverService::getFromRelease(Database::ReleaseId releaseId, ImageSize width) { const CacheEntryDesc cacheEntryDesc {releaseId, width}; @@ -409,7 +409,7 @@ Grabber::getFromRelease(Database::ReleaseId releaseId, ImageSize width) } void -Grabber::flushCache() +CoverService::flushCache() { std::unique_lock lock {_cacheMutex}; @@ -421,7 +421,7 @@ Grabber::flushCache() } void -Grabber::setJpegQuality(unsigned quality) +CoverService::setJpegQuality(unsigned quality) { _jpegQuality = Utils::clamp(quality, 1, 100); @@ -429,7 +429,7 @@ Grabber::setJpegQuality(unsigned quality) } void -Grabber::saveToCache(const CacheEntryDesc& entryDesc, std::shared_ptr image) +CoverService::saveToCache(const CacheEntryDesc& entryDesc, std::shared_ptr image) { std::unique_lock lock {_cacheMutex}; @@ -445,7 +445,7 @@ Grabber::saveToCache(const CacheEntryDesc& entryDesc, std::shared_ptr -Grabber::loadFromCache(const CacheEntryDesc& entryDesc) +CoverService::loadFromCache(const CacheEntryDesc& entryDesc) { std::shared_lock lock {_cacheMutex}; @@ -460,5 +460,5 @@ Grabber::loadFromCache(const CacheEntryDesc& entryDesc) return it->second; } -} // namespace CoverArt +} // namespace Cover diff --git a/src/libs/cover/impl/CoverArtGrabber.hpp b/src/libs/cover/impl/CoverService.hpp similarity index 89% rename from src/libs/cover/impl/CoverArtGrabber.hpp rename to src/libs/cover/impl/CoverService.hpp index 15e5f1ec..c67f068c 100644 --- a/src/libs/cover/impl/CoverArtGrabber.hpp +++ b/src/libs/cover/impl/CoverService.hpp @@ -29,7 +29,7 @@ #include #include -#include "cover/ICoverArtGrabber.hpp" +#include "cover/ICoverService.hpp" #include "cover/IEncodedImage.hpp" #include "database/Types.hpp" @@ -43,7 +43,7 @@ namespace Av class IAudioFile; } -namespace CoverArt +namespace Cover { struct CacheEntryDesc { @@ -57,16 +57,16 @@ namespace CoverArt } }; -} // ns CoverArt +} // ns Cover namespace std { template<> - class hash + class hash { public: - size_t operator()(const CoverArt::CacheEntryDesc& e) const + size_t operator()(const Cover::CacheEntryDesc& e) const { size_t h {}; std::visit([&](auto id) @@ -81,19 +81,19 @@ namespace std } // ns std -namespace CoverArt +namespace Cover { - class Grabber : public IGrabber + class CoverService : public ICoverService { public: - Grabber(Database::Db& db, + CoverService(Database::Db& db, const std::filesystem::path& execPath, const std::filesystem::path& defaultCoverPath); - Grabber(const Grabber&) = delete; - Grabber& operator=(const Grabber&) = delete; - Grabber(Grabber&&) = delete; - Grabber& operator=(Grabber&&) = delete; + CoverService(const CoverService&) = delete; + CoverService& operator=(const CoverService&) = delete; + CoverService(CoverService&&) = delete; + CoverService& operator=(CoverService&&) = delete; private: std::shared_ptr getFromTrack(Database::TrackId trackId, ImageSize width) override; @@ -133,5 +133,5 @@ namespace CoverArt unsigned _jpegQuality; }; -} // namespace CoverArt +} // namespace Cover diff --git a/src/libs/cover/impl/Exception.hpp b/src/libs/cover/impl/Exception.hpp index e6c8c342..78708f85 100644 --- a/src/libs/cover/impl/Exception.hpp +++ b/src/libs/cover/impl/Exception.hpp @@ -21,7 +21,7 @@ #include "utils/Exception.hpp" -namespace CoverArt +namespace Cover { // internal use only class ImageException : public LmsException @@ -30,5 +30,5 @@ namespace CoverArt using LmsException::LmsException; }; -} // namespace CoverArt +} // namespace Cover diff --git a/src/libs/cover/impl/IRawImage.hpp b/src/libs/cover/impl/IRawImage.hpp index 6ff9e6d1..02e13ce8 100644 --- a/src/libs/cover/impl/IRawImage.hpp +++ b/src/libs/cover/impl/IRawImage.hpp @@ -23,7 +23,7 @@ #include "cover/IEncodedImage.hpp" -namespace CoverArt +namespace Cover { class IRawImage { diff --git a/src/libs/cover/impl/stb/JPEGImage.cpp b/src/libs/cover/impl/stb/JPEGImage.cpp index 68eafe43..aad386c2 100644 --- a/src/libs/cover/impl/stb/JPEGImage.cpp +++ b/src/libs/cover/impl/stb/JPEGImage.cpp @@ -25,7 +25,7 @@ #include "RawImage.hpp" #include "Exception.hpp" -namespace CoverArt::STB +namespace Cover::STB { JPEGImage::JPEGImage(const RawImage& rawImage, unsigned quality) { diff --git a/src/libs/cover/impl/stb/JPEGImage.hpp b/src/libs/cover/impl/stb/JPEGImage.hpp index 3256cd10..0ccfd98f 100644 --- a/src/libs/cover/impl/stb/JPEGImage.hpp +++ b/src/libs/cover/impl/stb/JPEGImage.hpp @@ -23,7 +23,7 @@ #include "cover/IEncodedImage.hpp" -namespace CoverArt::STB +namespace Cover::STB { class RawImage; class JPEGImage : public IEncodedImage diff --git a/src/libs/cover/impl/stb/RawImage.cpp b/src/libs/cover/impl/stb/RawImage.cpp index 13ff1d75..9df69d80 100644 --- a/src/libs/cover/impl/stb/RawImage.cpp +++ b/src/libs/cover/impl/stb/RawImage.cpp @@ -32,7 +32,7 @@ #include "Exception.hpp" -namespace CoverArt::STB +namespace Cover::STB { RawImage::RawImage(const std::byte* encodedData, std::size_t encodedDataSize) { diff --git a/src/libs/cover/impl/stb/RawImage.hpp b/src/libs/cover/impl/stb/RawImage.hpp index d4f36aa1..b0753268 100644 --- a/src/libs/cover/impl/stb/RawImage.hpp +++ b/src/libs/cover/impl/stb/RawImage.hpp @@ -29,7 +29,7 @@ #include "cover/IEncodedImage.hpp" #include "IRawImage.hpp" -namespace CoverArt::STB +namespace Cover::STB { class RawImage : public IRawImage { diff --git a/src/libs/cover/include/cover/ICoverArtGrabber.hpp b/src/libs/cover/include/cover/ICoverService.hpp similarity index 82% rename from src/libs/cover/include/cover/ICoverArtGrabber.hpp rename to src/libs/cover/include/cover/ICoverService.hpp index d6bcdf67..1df5942b 100644 --- a/src/libs/cover/include/cover/ICoverArtGrabber.hpp +++ b/src/libs/cover/include/cover/ICoverService.hpp @@ -30,12 +30,12 @@ namespace Database class Db; } -namespace CoverArt +namespace Cover { - class IGrabber + class ICoverService { public: - virtual ~IGrabber() = default; + virtual ~ICoverService() = default; virtual std::shared_ptr getFromTrack(Database::TrackId trackId, ImageSize width) = 0; virtual std::shared_ptr getFromRelease(Database::ReleaseId releaseId, ImageSize width) = 0; @@ -45,9 +45,9 @@ namespace CoverArt virtual void setJpegQuality(unsigned quality) = 0; // from 1 to 100 }; - std::unique_ptr createGrabber(Database::Db& db, - const std::filesystem::path& execPath, - const std::filesystem::path& defaultCoverPath); + std::unique_ptr createCoverService(Database::Db& db, + const std::filesystem::path& execPath, + const std::filesystem::path& defaultCoverPath); } // namespace CoverArt diff --git a/src/libs/cover/include/cover/IEncodedImage.hpp b/src/libs/cover/include/cover/IEncodedImage.hpp index 0fc245be..8567a57b 100644 --- a/src/libs/cover/include/cover/IEncodedImage.hpp +++ b/src/libs/cover/include/cover/IEncodedImage.hpp @@ -22,7 +22,7 @@ #include #include -namespace CoverArt +namespace Cover { using ImageSize = std::size_t; @@ -36,5 +36,5 @@ namespace CoverArt virtual std::string_view getMimeType() const = 0; }; -} // namespace CoverArt +} // namespace Cover diff --git a/src/libs/subsonic/impl/SubsonicResource.cpp b/src/libs/subsonic/impl/SubsonicResource.cpp index 5cc0b4e4..27881aa0 100644 --- a/src/libs/subsonic/impl/SubsonicResource.cpp +++ b/src/libs/subsonic/impl/SubsonicResource.cpp @@ -28,7 +28,7 @@ #include "auth/IPasswordService.hpp" #include "auth/IEnvService.hpp" -#include "cover/ICoverArtGrabber.hpp" +#include "cover/ICoverService.hpp" #include "database/Artist.hpp" #include "database/Cluster.hpp" #include "database/Db.hpp" @@ -1802,11 +1802,11 @@ handleGetCoverArt(RequestContext& context, const Wt::Http::Request& /*request*/, std::size_t size {getParameterAs(context.parameters, "size").value_or(256)}; size = Utils::clamp(size, std::size_t {32}, std::size_t {1024}); - std::shared_ptr cover; + std::shared_ptr cover; if (trackId) - cover = Service::get()->getFromTrack(*trackId, size); + cover = Service::get()->getFromTrack(*trackId, size); else if (releaseId) - cover = Service::get()->getFromRelease(*releaseId, size); + cover = Service::get()->getFromRelease(*releaseId, size); response.out().write(reinterpret_cast(cover->getData()), cover->getDataSize()); response.setMimeType(std::string {cover->getMimeType()}); diff --git a/src/lms/main.cpp b/src/lms/main.cpp index ec7b906c..5ad76bfe 100644 --- a/src/lms/main.cpp +++ b/src/lms/main.cpp @@ -28,7 +28,7 @@ #include "auth/IAuthTokenService.hpp" #include "auth/IPasswordService.hpp" #include "auth/IEnvService.hpp" -#include "cover/ICoverArtGrabber.hpp" +#include "cover/ICoverService.hpp" #include "database/Db.hpp" #include "database/Session.hpp" #include "scanner/IScanner.hpp" @@ -224,7 +224,7 @@ int main(int argc, char* argv[]) Wt::WServer server {argv[0]}; server.setServerConfiguration(wtServerArgs.size(), const_cast(&wtArgv[0])); - IOContextRunner ioContextRunner {ioContext, std::max(2, std::thread::hardware_concurrency())}; + IOContextRunner ioContextRunner {ioContext, getThreadCount()}; // Initializing a connection pool to the database that will be shared along services Database::Db database {config->getPath("working-dir") / "lms.db", getThreadCount()}; @@ -257,7 +257,7 @@ int main(int argc, char* argv[]) throw LmsException {"Bad value '" + authenticationBackend + "' for 'authentication-backend'"}; Service httpClient {Http::createClient(ioContext)}; - Service coverArtService {CoverArt::createGrabber(database, argv[0], server.appRoot() + "/images/unknown-cover.jpg")}; + Service coverService {Cover::createCoverService(database, argv[0], server.appRoot() + "/images/unknown-cover.jpg")}; Service recommendationEngineService {Recommendation::createEngine(database)}; Service scannerService {Scanner::createScanner(database, *recommendationEngineService)}; @@ -265,7 +265,7 @@ int main(int argc, char* argv[]) { // Flush cover cache even if no changes: // covers may be external files that changed and we don't keep track of them - coverArtService->flushCache(); + coverService->flushCache(); }); Service scrobblingService {Scrobbling::createScrobbling(ioContext, database)}; diff --git a/src/lms/ui/LmsApplication.cpp b/src/lms/ui/LmsApplication.cpp index e192763e..38116bd8 100644 --- a/src/lms/ui/LmsApplication.cpp +++ b/src/lms/ui/LmsApplication.cpp @@ -30,7 +30,7 @@ #include "auth/IEnvService.hpp" #include "auth/IPasswordService.hpp" -#include "cover/ICoverArtGrabber.hpp" +#include "cover/ICoverService.hpp" #include "database/Artist.hpp" #include "database/Cluster.hpp" #include "database/Db.hpp" diff --git a/src/lms/ui/resource/CoverResource.cpp b/src/lms/ui/resource/CoverResource.cpp index 2ed89d9e..c06b3159 100644 --- a/src/lms/ui/resource/CoverResource.cpp +++ b/src/lms/ui/resource/CoverResource.cpp @@ -22,7 +22,7 @@ #include #include -#include "cover/ICoverArtGrabber.hpp" +#include "cover/ICoverService.hpp" #include "database/Track.hpp" #include "utils/Exception.hpp" #include "utils/Logger.hpp" @@ -83,7 +83,7 @@ CoverResource::handleRequest(const Wt::Http::Request& request, Wt::Http::Respons return; } - std::shared_ptr cover; + std::shared_ptr cover; if (trackIdStr) { @@ -96,7 +96,7 @@ CoverResource::handleRequest(const Wt::Http::Request& request, Wt::Http::Respons return; } - cover = Service::get()->getFromTrack(*trackId, *size); + cover = Service::get()->getFromTrack(*trackId, *size); } else if (releaseIdStr) { @@ -106,7 +106,7 @@ CoverResource::handleRequest(const Wt::Http::Request& request, Wt::Http::Respons if (!releaseId) return; - cover = Service::get()->getFromRelease(*releaseId, *size); + cover = Service::get()->getFromRelease(*releaseId, *size); } else { diff --git a/src/tools/cover/LmsCover.cpp b/src/tools/cover/LmsCover.cpp index f1b44c97..e09b223d 100644 --- a/src/tools/cover/LmsCover.cpp +++ b/src/tools/cover/LmsCover.cpp @@ -24,7 +24,7 @@ #include -#include "cover/ICoverArtGrabber.hpp" +#include "cover/ICoverService.hpp" #include "database/Db.hpp" #include "database/Release.hpp" #include "database/Session.hpp" @@ -36,7 +36,7 @@ static void -dumpTrackCovers(Database::Session& session, CoverArt::ImageSize width) +dumpTrackCovers(Database::Session& session, Cover::ImageSize width) { std::vector trackIds; { @@ -47,7 +47,7 @@ dumpTrackCovers(Database::Session& session, CoverArt::ImageSize width) for (const Database::TrackId trackId : trackIds) { std::cout << "Getting cover for track id " << trackId.toString() << std::endl; - Service::get()->getFromTrack(trackId, width); + Service::get()->getFromTrack(trackId, width); } } @@ -83,7 +83,7 @@ int main(int argc, char *argv[]) Service config {createConfig(vm["conf"].as())}; Database::Db db {config->getPath("working-dir") / "lms.db"}; - Service coverArtService {CoverArt::createGrabber(db, argv[0], vm["default-cover"].as())}; + Service coverArtService {Cover::createCoverService(db, argv[0], vm["default-cover"].as())}; coverArtService->setJpegQuality(config->getULong("cover-jpeg-quality", vm["quality"].as()));