From 6ec0e42ded733c1d98267fde56b5f725005f43d3 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 3 Dec 2018 11:04:29 -0800 Subject: [PATCH] Remove locks from MIMETypeLibrary --- .../shared/src/shared/MIMETypeLibrary.cpp | 91 +++++++++---------- libraries/shared/src/shared/MIMETypeLibrary.h | 4 +- 2 files changed, 42 insertions(+), 53 deletions(-) diff --git a/libraries/shared/src/shared/MIMETypeLibrary.cpp b/libraries/shared/src/shared/MIMETypeLibrary.cpp index 4f12f373fe..3532876b67 100644 --- a/libraries/shared/src/shared/MIMETypeLibrary.cpp +++ b/libraries/shared/src/shared/MIMETypeLibrary.cpp @@ -12,74 +12,65 @@ #include "MIMETypeLibrary.h" MIMETypeLibrary::ID MIMETypeLibrary::registerMIMEType(const MIMEType& mimeType) { - ID id; - withWriteLock([&](){ - id = nextID++; - _mimeTypes.emplace_back(id, mimeType); - }); + ID id = nextID++; + _mimeTypes.emplace_back(id, mimeType); return id; } void MIMETypeLibrary::unregisterMIMEType(const MIMETypeLibrary::ID& id) { - withWriteLock([&](){ - for (auto it = _mimeTypes.begin(); it != _mimeTypes.end(); it++) { - if ((*it).id == id) { - _mimeTypes.erase(it); - break; - } + for (auto it = _mimeTypes.begin(); it != _mimeTypes.end(); it++) { + if ((*it).id == id) { + _mimeTypes.erase(it); + break; } - }); + } } MIMEType MIMETypeLibrary::getMIMEType(const MIMETypeLibrary::ID& id) const { - return resultWithReadLock([&](){ - for (auto& supportedFormat : _mimeTypes) { - if (supportedFormat.id == id) { - return supportedFormat.mimeType; - } + for (auto& supportedFormat : _mimeTypes) { + if (supportedFormat.id == id) { + return supportedFormat.mimeType; } - return MIMEType::NONE; - }); + } + return MIMEType::NONE; } MIMETypeLibrary::ID MIMETypeLibrary::findMatchingMIMEType(const hifi::ByteArray& data, const hifi::VariantHash& mapping, const hifi::URL& url, const std::string& webMediaType) const { - return resultWithReadLock([&](){ - // Check file contents - for (auto& mimeType : _mimeTypes) { - for (auto& fileSignature : mimeType.mimeType.fileSignatures) { - auto testBytes = data.mid(fileSignature.byteOffset, (int)fileSignature.bytes.size()).toStdString(); - if (testBytes == fileSignature.bytes) { - return mimeType.id; + // Check file contents + for (auto& mimeType : _mimeTypes) { + for (auto& fileSignature : mimeType.mimeType.fileSignatures) { + auto testBytes = data.mid(fileSignature.byteOffset, (int)fileSignature.bytes.size()).toStdString(); + if (testBytes == fileSignature.bytes) { + return mimeType.id; + } + } + } + + // Check file extension + std::string urlString = url.path().toStdString(); + std::size_t extensionSeparator = urlString.rfind('.'); + if (extensionSeparator != std::string::npos) { + std::string detectedExtension = urlString.substr(extensionSeparator + 1); + for (auto& supportedFormat : _mimeTypes) { + for (auto& extension : supportedFormat.mimeType.extensions) { + if (extension == detectedExtension) { + return supportedFormat.id; } } } + } - // Check file extension - std::string urlString = url.path().toStdString(); - std::size_t extensionSeparator = urlString.rfind('.'); - if (extensionSeparator != std::string::npos) { - std::string detectedExtension = urlString.substr(extensionSeparator + 1); - for (auto& supportedFormat : _mimeTypes) { - for (auto& extension : supportedFormat.mimeType.extensions) { - if (extension == detectedExtension) { - return supportedFormat.id; - } + // Check web media type + if (webMediaType != "") { + for (auto& supportedFormat : _mimeTypes) { + for (auto& candidateWebMediaType : supportedFormat.mimeType.webMediaTypes) { + if (candidateWebMediaType == webMediaType) { + return supportedFormat.id; } } } + } - // Check web media type - if (webMediaType != "") { - for (auto& supportedFormat : _mimeTypes) { - for (auto& candidateWebMediaType : supportedFormat.mimeType.webMediaTypes) { - if (candidateWebMediaType == webMediaType) { - return supportedFormat.id; - } - } - } - } - - // Supported file type not found. - return INVALID_ID; - }); + // Supported file type not found. + return INVALID_ID; } diff --git a/libraries/shared/src/shared/MIMETypeLibrary.h b/libraries/shared/src/shared/MIMETypeLibrary.h index 62bc28cdad..354192dd48 100644 --- a/libraries/shared/src/shared/MIMETypeLibrary.h +++ b/libraries/shared/src/shared/MIMETypeLibrary.h @@ -19,8 +19,6 @@ #include "HifiTypes.h" -#include "ReadWriteLockable.h" - // A short sequence of bytes, typically at the beginning of the file, which identifies the file format class FileSignature { public: @@ -61,7 +59,7 @@ public: MIMEType MIMEType::NONE = MIMEType(""); -class MIMETypeLibrary : ReadWriteLockable { +class MIMETypeLibrary { public: using ID = unsigned int; static const ID INVALID_ID { 0 };