db/upnp: use std::list instead of std::vector
Reduce overhead.
This commit is contained in:
parent
aa1eb2f40d
commit
5434856136
@ -105,7 +105,7 @@ protected:
|
||||
|
||||
private:
|
||||
bool VisitServer(ContentDirectoryService &server,
|
||||
const std::vector<std::string> &vpath,
|
||||
const std::list<std::string> &vpath,
|
||||
const DatabaseSelection &selection,
|
||||
VisitDirectory visit_directory,
|
||||
VisitSong visit_song,
|
||||
@ -129,7 +129,7 @@ private:
|
||||
Error &error) const;
|
||||
|
||||
bool Namei(ContentDirectoryService &server,
|
||||
const std::vector<std::string> &vpath,
|
||||
const std::list<std::string> &vpath,
|
||||
UPnPDirObject &dirent,
|
||||
Error &error) const;
|
||||
|
||||
@ -229,7 +229,8 @@ UpnpDatabase::GetSong(const char *uri, Error &error) const
|
||||
if (!m_superdir->getServer(vpath.front().c_str(), server, error))
|
||||
return nullptr;
|
||||
|
||||
vpath.erase(vpath.begin());
|
||||
vpath.pop_front();
|
||||
|
||||
UPnPDirObject dirent;
|
||||
if (vpath.front() != rootid) {
|
||||
if (!Namei(server, vpath, dirent, error))
|
||||
@ -463,7 +464,7 @@ UpnpDatabase::BuildPath(ContentDirectoryService &server,
|
||||
// Take server and internal title pathname and return objid and metadata.
|
||||
bool
|
||||
UpnpDatabase::Namei(ContentDirectoryService &server,
|
||||
const std::vector<std::string> &vpath,
|
||||
const std::list<std::string> &vpath,
|
||||
UPnPDirObject &odirent,
|
||||
Error &error) const
|
||||
{
|
||||
@ -528,7 +529,7 @@ UpnpDatabase::Namei(ContentDirectoryService &server,
|
||||
// really just one path parameter.
|
||||
bool
|
||||
UpnpDatabase::VisitServer(ContentDirectoryService &server,
|
||||
const std::vector<std::string> &vpath,
|
||||
const std::list<std::string> &vpath,
|
||||
const DatabaseSelection &selection,
|
||||
VisitDirectory visit_directory,
|
||||
VisitSong visit_song,
|
||||
@ -706,7 +707,7 @@ UpnpDatabase::Visit(const DatabaseSelection &selection,
|
||||
|
||||
// We do have a path: the first element selects the server
|
||||
std::string servername(std::move(vpath.front()));
|
||||
vpath.erase(vpath.begin());
|
||||
vpath.pop_front();
|
||||
|
||||
ContentDirectoryService server;
|
||||
if (!m_superdir->getServer(servername.c_str(), server, error))
|
||||
|
@ -88,11 +88,11 @@ path_getfather(const std::string &s)
|
||||
return father;
|
||||
}
|
||||
|
||||
std::vector<std::string>
|
||||
std::list<std::string>
|
||||
stringToTokens(const std::string &str,
|
||||
const char *delims, bool skipinit)
|
||||
{
|
||||
std::vector<std::string> tokens;
|
||||
std::list<std::string> tokens;
|
||||
|
||||
std::string::size_type startPos = 0;
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
#include "Compiler.h"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
|
||||
std::string
|
||||
caturl(const std::string& s1, const std::string& s2);
|
||||
@ -36,7 +36,7 @@ std::string
|
||||
path_getfather(const std::string &s);
|
||||
|
||||
gcc_pure
|
||||
std::vector<std::string>
|
||||
std::list<std::string>
|
||||
stringToTokens(const std::string &str,
|
||||
const char *delims = "/", bool skipinit = true);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user