db/upnp/discovery: convert std::strings to const char *

Reduce bloat.
This commit is contained in:
Max Kellermann 2014-01-11 01:21:54 +01:00
parent 4b3a3d6faa
commit 8add78ed5e

View File

@ -34,25 +34,27 @@
#include <map> #include <map>
// The service type string we are looking for. // The service type string we are looking for.
static const std::string ContentDirectorySType("urn:schemas-upnp-org:service:ContentDirectory:1"); static const char *const ContentDirectorySType = "urn:schemas-upnp-org:service:ContentDirectory:1";
// We don't include a version in comparisons, as we are satisfied with // We don't include a version in comparisons, as we are satisfied with
// version 1 // version 1
gcc_pure
static bool static bool
isCDService(const std::string &st) isCDService(const char *st)
{ {
const std::string::size_type sz(ContentDirectorySType.size()-2); const size_t sz = strlen(ContentDirectorySType) - 2;
return !ContentDirectorySType.compare(0, sz, st, 0, sz); return memcmp(ContentDirectorySType, st, sz) == 0;
} }
// The type of device we're asking for in search // The type of device we're asking for in search
static const std::string MediaServerDType("urn:schemas-upnp-org:device:MediaServer:1") ; static const char *const MediaServerDType = "urn:schemas-upnp-org:device:MediaServer:1";
gcc_pure
static bool static bool
isMSDevice(const std::string &st) isMSDevice(const char *st)
{ {
const std::string::size_type sz(MediaServerDType.size()-2); const size_t sz = strlen(MediaServerDType) - 2;
return !MediaServerDType.compare(0, sz, st, 0, sz); return memcmp(MediaServerDType, st, sz) == 0;
} }
/** /**
@ -252,7 +254,7 @@ UPnPDeviceDirectory::search()
// We search both for device and service just in case. // We search both for device and service just in case.
int code = UpnpSearchAsync(lib->getclh(), m_searchTimeout, int code = UpnpSearchAsync(lib->getclh(), m_searchTimeout,
ContentDirectorySType.c_str(), lib); ContentDirectorySType, lib);
if (code != UPNP_E_SUCCESS) { if (code != UPNP_E_SUCCESS) {
error.Format(upnp_domain, code, error.Format(upnp_domain, code,
"UpnpSearchAsync() failed: %s", "UpnpSearchAsync() failed: %s",
@ -261,7 +263,7 @@ UPnPDeviceDirectory::search()
} }
code = UpnpSearchAsync(lib->getclh(), m_searchTimeout, code = UpnpSearchAsync(lib->getclh(), m_searchTimeout,
MediaServerDType.c_str(), lib); MediaServerDType, lib);
if (code != UPNP_E_SUCCESS) { if (code != UPNP_E_SUCCESS) {
error.Format(upnp_domain, code, error.Format(upnp_domain, code,
"UpnpSearchAsync() failed: %s", "UpnpSearchAsync() failed: %s",
@ -297,7 +299,7 @@ UPnPDeviceDirectory::getDirServices(std::vector<ContentDirectoryService> &out)
for (auto dit = contentDirectories.m_directories.begin(); for (auto dit = contentDirectories.m_directories.begin();
dit != contentDirectories.m_directories.end(); dit++) { dit != contentDirectories.m_directories.end(); dit++) {
for (const auto &service : dit->second.device.services) { for (const auto &service : dit->second.device.services) {
if (isCDService(service.serviceType)) { if (isCDService(service.serviceType.c_str())) {
out.emplace_back(dit->second.device, service); out.emplace_back(dit->second.device, service);
} }
} }