summaryrefslogtreecommitdiff
path: root/music.h
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2010-12-29 21:54:04 +0100
committerJon Bergli Heier <snakebite@jvnv.net>2010-12-29 21:54:04 +0100
commitd67fd6103956046245744cf5cf094d4da8cbcc19 (patch)
tree3e0dc28c50644ae271e8b208eb8cb362e0e5a43a /music.h
parent945887004432a7634ce096a7c3744b42ae2ab987 (diff)
Don't read entire directory tree into memory.
Diffstat (limited to 'music.h')
-rw-r--r--music.h14
1 files changed, 5 insertions, 9 deletions
diff --git a/music.h b/music.h
index a86c6ac..7f1c813 100644
--- a/music.h
+++ b/music.h
@@ -11,6 +11,7 @@ namespace fs = boost::filesystem;
class MusicListing {
public:
+ typedef boost::shared_ptr<MusicListing> p;
fs::path path;
virtual void render(HTTPRequest& req, HTTPResponse& res) = 0;
};
@@ -21,24 +22,19 @@ class MusicTrack : public MusicListing {
virtual void render(HTTPRequest& req, HTTPResponse& res);
};
-class MusicDirectory;
-typedef std::vector<MusicDirectory> MusicDirectories;
-typedef std::vector<MusicTrack> MusicTracks;
-
class MusicDirectory : public MusicListing {
public:
- MusicDirectories directories;
- MusicTracks tracks;
+ typedef std::vector<fs::path> PathListings;
+ PathListings directories;
+ PathListings tracks;
MusicDirectory(const fs::path root);
virtual void render(HTTPRequest& req, HTTPResponse& res);
};
namespace music {
- extern MusicDirectory *root_directory;
void init(std::string root);
- MusicListing *find(std::string path, MusicDirectory& root);
- MusicListing *find(std::string path);
+ MusicListing::p get(const std::string path);
};
#endif