WIP, Remote Client/Server, fist working track list

This commit is contained in:
emeric
2014-05-23 14:56:22 +02:00
parent d945f4623f
commit 61341a090a
19 changed files with 932 additions and 587 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ int main(void)
SqlQuery query;
query.select().And( SelectStatement("artist.name")).And( SelectStatement("track.name"));
query.select("artist.name").And("track.name");
query.from().And( FromClause("artist") ).And( FromClause("track"));
query.where().And( WhereClause("artist.id = track.artist_id") );
+3
View File
@@ -21,6 +21,7 @@ remote_SOURCES = \
$(top_srcdir)/database/Release.cpp \
$(top_srcdir)/database/Track.cpp \
$(top_srcdir)/database/DatabaseHandler.cpp \
$(top_srcdir)/database/SqlQuery.cpp \
$(top_srcdir)/database/Path.cpp \
$(top_srcdir)/database/Video.cpp \
$(top_srcdir)/database/Checksum.cpp
@@ -34,6 +35,7 @@ database_integrity_SOURCES = \
$(top_srcdir)/database/Release.cpp \
$(top_srcdir)/database/Track.cpp \
$(top_srcdir)/database/DatabaseHandler.cpp \
$(top_srcdir)/database/SqlQuery.cpp \
$(top_srcdir)/database/Path.cpp \
$(top_srcdir)/database/Video.cpp \
$(top_srcdir)/database/Checksum.cpp
@@ -47,6 +49,7 @@ database_basics_SOURCES = \
$(top_srcdir)/database/Release.cpp \
$(top_srcdir)/database/Track.cpp \
$(top_srcdir)/database/DatabaseHandler.cpp \
$(top_srcdir)/database/SqlQuery.cpp \
$(top_srcdir)/database/Path.cpp \
$(top_srcdir)/database/Video.cpp \
$(top_srcdir)/database/Checksum.cpp
+52 -2
View File
@@ -97,6 +97,7 @@ am_database_basics_OBJECTS = \
database_basics-Release.$(OBJEXT) \
database_basics-Track.$(OBJEXT) \
database_basics-DatabaseHandler.$(OBJEXT) \
database_basics-SqlQuery.$(OBJEXT) \
database_basics-Path.$(OBJEXT) database_basics-Video.$(OBJEXT) \
database_basics-Checksum.$(OBJEXT)
database_basics_OBJECTS = $(am_database_basics_OBJECTS)
@@ -110,6 +111,7 @@ am_database_integrity_OBJECTS = \
database_integrity-Release.$(OBJEXT) \
database_integrity-Track.$(OBJEXT) \
database_integrity-DatabaseHandler.$(OBJEXT) \
database_integrity-SqlQuery.$(OBJEXT) \
database_integrity-Path.$(OBJEXT) \
database_integrity-Video.$(OBJEXT) \
database_integrity-Checksum.$(OBJEXT)
@@ -127,8 +129,8 @@ am_remote_OBJECTS = remote-RemoteClientServer.$(OBJEXT) \
remote-messages.pb.$(OBJEXT) remote-Artist.$(OBJEXT) \
remote-Genre.$(OBJEXT) remote-Release.$(OBJEXT) \
remote-Track.$(OBJEXT) remote-DatabaseHandler.$(OBJEXT) \
remote-Path.$(OBJEXT) remote-Video.$(OBJEXT) \
remote-Checksum.$(OBJEXT)
remote-SqlQuery.$(OBJEXT) remote-Path.$(OBJEXT) \
remote-Video.$(OBJEXT) remote-Checksum.$(OBJEXT)
remote_OBJECTS = $(am_remote_OBJECTS)
remote_LDADD = $(LDADD)
remote_LINK = $(CXXLD) $(remote_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
@@ -511,6 +513,7 @@ remote_SOURCES = \
$(top_srcdir)/database/Release.cpp \
$(top_srcdir)/database/Track.cpp \
$(top_srcdir)/database/DatabaseHandler.cpp \
$(top_srcdir)/database/SqlQuery.cpp \
$(top_srcdir)/database/Path.cpp \
$(top_srcdir)/database/Video.cpp \
$(top_srcdir)/database/Checksum.cpp
@@ -523,6 +526,7 @@ database_integrity_SOURCES = \
$(top_srcdir)/database/Release.cpp \
$(top_srcdir)/database/Track.cpp \
$(top_srcdir)/database/DatabaseHandler.cpp \
$(top_srcdir)/database/SqlQuery.cpp \
$(top_srcdir)/database/Path.cpp \
$(top_srcdir)/database/Video.cpp \
$(top_srcdir)/database/Checksum.cpp
@@ -535,6 +539,7 @@ database_basics_SOURCES = \
$(top_srcdir)/database/Release.cpp \
$(top_srcdir)/database/Track.cpp \
$(top_srcdir)/database/DatabaseHandler.cpp \
$(top_srcdir)/database/SqlQuery.cpp \
$(top_srcdir)/database/Path.cpp \
$(top_srcdir)/database/Video.cpp \
$(top_srcdir)/database/Checksum.cpp
@@ -612,6 +617,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_basics-Genre.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_basics-Path.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_basics-Release.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_basics-SqlQuery.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_basics-Track.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_basics-Video.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_integrity-Artist.Po@am__quote@
@@ -621,6 +627,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_integrity-Genre.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_integrity-Path.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_integrity-Release.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_integrity-SqlQuery.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_integrity-Track.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/database_integrity-Video.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Artist.Po@am__quote@
@@ -635,6 +642,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-RemoteClientServer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-RequestHandler.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Server.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-SqlQuery.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-TestDatabase.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Track.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-Video.Po@am__quote@
@@ -744,6 +752,20 @@ database_basics-DatabaseHandler.obj: $(top_srcdir)/database/DatabaseHandler.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_basics_CXXFLAGS) $(CXXFLAGS) -c -o database_basics-DatabaseHandler.obj `if test -f '$(top_srcdir)/database/DatabaseHandler.cpp'; then $(CYGPATH_W) '$(top_srcdir)/database/DatabaseHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/database/DatabaseHandler.cpp'; fi`
database_basics-SqlQuery.o: $(top_srcdir)/database/SqlQuery.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_basics_CXXFLAGS) $(CXXFLAGS) -MT database_basics-SqlQuery.o -MD -MP -MF $(DEPDIR)/database_basics-SqlQuery.Tpo -c -o database_basics-SqlQuery.o `test -f '$(top_srcdir)/database/SqlQuery.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/SqlQuery.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/database_basics-SqlQuery.Tpo $(DEPDIR)/database_basics-SqlQuery.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/database/SqlQuery.cpp' object='database_basics-SqlQuery.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_basics_CXXFLAGS) $(CXXFLAGS) -c -o database_basics-SqlQuery.o `test -f '$(top_srcdir)/database/SqlQuery.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/SqlQuery.cpp
database_basics-SqlQuery.obj: $(top_srcdir)/database/SqlQuery.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_basics_CXXFLAGS) $(CXXFLAGS) -MT database_basics-SqlQuery.obj -MD -MP -MF $(DEPDIR)/database_basics-SqlQuery.Tpo -c -o database_basics-SqlQuery.obj `if test -f '$(top_srcdir)/database/SqlQuery.cpp'; then $(CYGPATH_W) '$(top_srcdir)/database/SqlQuery.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/database/SqlQuery.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/database_basics-SqlQuery.Tpo $(DEPDIR)/database_basics-SqlQuery.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/database/SqlQuery.cpp' object='database_basics-SqlQuery.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_basics_CXXFLAGS) $(CXXFLAGS) -c -o database_basics-SqlQuery.obj `if test -f '$(top_srcdir)/database/SqlQuery.cpp'; then $(CYGPATH_W) '$(top_srcdir)/database/SqlQuery.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/database/SqlQuery.cpp'; fi`
database_basics-Path.o: $(top_srcdir)/database/Path.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_basics_CXXFLAGS) $(CXXFLAGS) -MT database_basics-Path.o -MD -MP -MF $(DEPDIR)/database_basics-Path.Tpo -c -o database_basics-Path.o `test -f '$(top_srcdir)/database/Path.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/Path.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/database_basics-Path.Tpo $(DEPDIR)/database_basics-Path.Po
@@ -870,6 +892,20 @@ database_integrity-DatabaseHandler.obj: $(top_srcdir)/database/DatabaseHandler.c
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_integrity_CXXFLAGS) $(CXXFLAGS) -c -o database_integrity-DatabaseHandler.obj `if test -f '$(top_srcdir)/database/DatabaseHandler.cpp'; then $(CYGPATH_W) '$(top_srcdir)/database/DatabaseHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/database/DatabaseHandler.cpp'; fi`
database_integrity-SqlQuery.o: $(top_srcdir)/database/SqlQuery.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_integrity_CXXFLAGS) $(CXXFLAGS) -MT database_integrity-SqlQuery.o -MD -MP -MF $(DEPDIR)/database_integrity-SqlQuery.Tpo -c -o database_integrity-SqlQuery.o `test -f '$(top_srcdir)/database/SqlQuery.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/SqlQuery.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/database_integrity-SqlQuery.Tpo $(DEPDIR)/database_integrity-SqlQuery.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/database/SqlQuery.cpp' object='database_integrity-SqlQuery.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_integrity_CXXFLAGS) $(CXXFLAGS) -c -o database_integrity-SqlQuery.o `test -f '$(top_srcdir)/database/SqlQuery.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/SqlQuery.cpp
database_integrity-SqlQuery.obj: $(top_srcdir)/database/SqlQuery.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_integrity_CXXFLAGS) $(CXXFLAGS) -MT database_integrity-SqlQuery.obj -MD -MP -MF $(DEPDIR)/database_integrity-SqlQuery.Tpo -c -o database_integrity-SqlQuery.obj `if test -f '$(top_srcdir)/database/SqlQuery.cpp'; then $(CYGPATH_W) '$(top_srcdir)/database/SqlQuery.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/database/SqlQuery.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/database_integrity-SqlQuery.Tpo $(DEPDIR)/database_integrity-SqlQuery.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/database/SqlQuery.cpp' object='database_integrity-SqlQuery.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_integrity_CXXFLAGS) $(CXXFLAGS) -c -o database_integrity-SqlQuery.obj `if test -f '$(top_srcdir)/database/SqlQuery.cpp'; then $(CYGPATH_W) '$(top_srcdir)/database/SqlQuery.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/database/SqlQuery.cpp'; fi`
database_integrity-Path.o: $(top_srcdir)/database/Path.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(database_integrity_CXXFLAGS) $(CXXFLAGS) -MT database_integrity-Path.o -MD -MP -MF $(DEPDIR)/database_integrity-Path.Tpo -c -o database_integrity-Path.o `test -f '$(top_srcdir)/database/Path.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/Path.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/database_integrity-Path.Tpo $(DEPDIR)/database_integrity-Path.Po
@@ -1150,6 +1186,20 @@ remote-DatabaseHandler.obj: $(top_srcdir)/database/DatabaseHandler.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-DatabaseHandler.obj `if test -f '$(top_srcdir)/database/DatabaseHandler.cpp'; then $(CYGPATH_W) '$(top_srcdir)/database/DatabaseHandler.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/database/DatabaseHandler.cpp'; fi`
remote-SqlQuery.o: $(top_srcdir)/database/SqlQuery.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-SqlQuery.o -MD -MP -MF $(DEPDIR)/remote-SqlQuery.Tpo -c -o remote-SqlQuery.o `test -f '$(top_srcdir)/database/SqlQuery.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/SqlQuery.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-SqlQuery.Tpo $(DEPDIR)/remote-SqlQuery.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/database/SqlQuery.cpp' object='remote-SqlQuery.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-SqlQuery.o `test -f '$(top_srcdir)/database/SqlQuery.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/SqlQuery.cpp
remote-SqlQuery.obj: $(top_srcdir)/database/SqlQuery.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-SqlQuery.obj -MD -MP -MF $(DEPDIR)/remote-SqlQuery.Tpo -c -o remote-SqlQuery.obj `if test -f '$(top_srcdir)/database/SqlQuery.cpp'; then $(CYGPATH_W) '$(top_srcdir)/database/SqlQuery.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/database/SqlQuery.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-SqlQuery.Tpo $(DEPDIR)/remote-SqlQuery.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$(top_srcdir)/database/SqlQuery.cpp' object='remote-SqlQuery.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -c -o remote-SqlQuery.obj `if test -f '$(top_srcdir)/database/SqlQuery.cpp'; then $(CYGPATH_W) '$(top_srcdir)/database/SqlQuery.cpp'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/database/SqlQuery.cpp'; fi`
remote-Path.o: $(top_srcdir)/database/Path.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(remote_CXXFLAGS) $(CXXFLAGS) -MT remote-Path.o -MD -MP -MF $(DEPDIR)/remote-Path.Tpo -c -o remote-Path.o `test -f '$(top_srcdir)/database/Path.cpp' || echo '$(srcdir)/'`$(top_srcdir)/database/Path.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/remote-Path.Tpo $(DEPDIR)/remote-Path.Po
+185 -13
View File
@@ -20,7 +20,7 @@ struct GenreInfo
std::ostream& operator<<(std::ostream& os, const GenreInfo& info)
{
os << "id = " << info.id << ", name = '" << info.name << "'" << std::endl;
os << "id = " << info.id << ", name = '" << info.name << "'";
return os;
}
@@ -32,10 +32,47 @@ struct ArtistInfo
std::ostream& operator<<(std::ostream& os, const ArtistInfo& info)
{
os << "id = " << info.id << ", name = '" << info.name << "'" << std::endl;
os << "id = " << info.id << ", name = '" << info.name << "'";
return os;
}
struct ReleaseInfo
{
uint64_t id;
std::string name;
std::size_t nbTracks;
boost::posix_time::time_duration duration;
};
std::ostream& operator<<(std::ostream& os, const ReleaseInfo& info)
{
os << "id = " << info.id << ", name = '" << info.name << "', tracks = " << info.nbTracks << ", duration = " << info.duration;
return os;
}
struct TrackInfo
{
uint64_t id;
uint64_t release_id;
uint64_t artist_id;
std::vector<uint64_t> genre_id;
uint32_t disc_number;
uint32_t track_number;
std::string name;
boost::posix_time::time_duration duration;
};
std::ostream& operator<<(std::ostream& os, const TrackInfo& info)
{
os << "id = " << info.id << ", name = '" << info.name << "', track_number = " << info.track_number << ", duration = " << info.duration;
return os;
}
// Ugly class for testing purposes
class TestServer
{
@@ -80,7 +117,7 @@ class TestClient
void getArtists(std::vector<ArtistInfo>& artists)
{
const std::size_t requestedBatchSize = 32;
const std::size_t requestedBatchSize = 128;
std::size_t offset = 0;
std::size_t res = 0;
@@ -135,7 +172,7 @@ class TestClient
void getGenres(std::vector<GenreInfo>& genres)
{
const std::size_t requestedBatchSize = 8;
const std::size_t requestedBatchSize = 128;
std::size_t offset = 0;
std::size_t res = 0;
@@ -182,11 +219,128 @@ class TestClient
genres.push_back( genre );
nbAdded++;
}
return nbAdded;
}
void getReleases(std::vector<ReleaseInfo>& releases, const std::vector<uint64_t> artistIds)
{
const std::size_t requestedBatchSize = 128;
std::size_t offset = 0;
std::size_t res = 0;
while ((res = getReleases(releases, artistIds, offset, requestedBatchSize) ) > 0)
offset += res;
}
std::size_t getReleases(std::vector<ReleaseInfo>& releases, const std::vector<uint64_t> artistIds, std::size_t offset, std::size_t size)
{
std::size_t nbAdded = 0;
// Send request
Remote::ClientMessage request;
request.set_type( Remote::ClientMessage_Type_AudioCollectionRequest );
request.mutable_audio_collection_request()->set_type( Remote::AudioCollectionRequest_Type_TypeGetReleaseList);
request.mutable_audio_collection_request()->mutable_get_releases()->mutable_batch_parameter()->set_size(size);
request.mutable_audio_collection_request()->mutable_get_releases()->mutable_batch_parameter()->set_offset(offset);
BOOST_FOREACH(uint64_t artistId, artistIds)
request.mutable_audio_collection_request()->mutable_get_releases()->add_artist_id(artistId);
sendMsg(request);
// Receive responses
Remote::ServerMessage response;
recvMsg(response);
// Process message
if (!response.has_audio_collection_response())
throw std::runtime_error("not an audio_collection_response!");
if (!response.audio_collection_response().has_release_list())
throw std::runtime_error("not an release list!");
for (int i = 0; i < response.audio_collection_response().release_list().releases_size(); ++i)
{
if (!response.audio_collection_response().release_list().releases(i).has_name())
throw std::runtime_error("no release name!");
ReleaseInfo release;
release.id = response.audio_collection_response().release_list().releases(i).id();
release.name = response.audio_collection_response().release_list().releases(i).name();
release.duration = boost::posix_time::seconds(response.audio_collection_response().release_list().releases(i).duration_secs());
release.nbTracks = response.audio_collection_response().release_list().releases(i).nb_tracks();
releases.push_back( release );
nbAdded++;
}
return nbAdded;
}
void getTracks(std::vector<TrackInfo>& tracks, const std::vector<uint64_t> artistIds, const std::vector<uint64_t> releaseIds, const std::vector<uint64_t> genreIds)
{
const std::size_t requestedBatchSize = 256;
std::size_t offset = 0;
std::size_t res = 0;
while ((res = getTracks(tracks, artistIds, releaseIds, genreIds, offset, requestedBatchSize) ) > 0)
offset += res;
}
std::size_t getTracks(std::vector<TrackInfo>& tracks,
const std::vector<uint64_t> artistIds,
const std::vector<uint64_t> releaseIds,
const std::vector<uint64_t> genreIds,
std::size_t offset,
std::size_t size)
{
std::size_t nbAdded = 0;
// Send request
Remote::ClientMessage request;
request.set_type( Remote::ClientMessage_Type_AudioCollectionRequest );
request.mutable_audio_collection_request()->set_type( Remote::AudioCollectionRequest_Type_TypeGetTrackList);
request.mutable_audio_collection_request()->mutable_get_tracks()->mutable_batch_parameter()->set_size(size);
request.mutable_audio_collection_request()->mutable_get_tracks()->mutable_batch_parameter()->set_offset(offset);
BOOST_FOREACH(uint64_t artistId, artistIds)
request.mutable_audio_collection_request()->mutable_get_tracks()->add_artist_id(artistId);
BOOST_FOREACH(uint64_t releaseId, releaseIds)
request.mutable_audio_collection_request()->mutable_get_tracks()->add_release_id(releaseId);
BOOST_FOREACH(uint64_t genreId, genreIds)
request.mutable_audio_collection_request()->mutable_get_tracks()->add_genre_id(genreId);
sendMsg(request);
// Receive responses
Remote::ServerMessage response;
recvMsg(response);
// Process message
if (!response.has_audio_collection_response())
throw std::runtime_error("not an audio_collection_response!");
if (!response.audio_collection_response().has_track_list())
throw std::runtime_error("not an track list!");
for (int i = 0; i < response.audio_collection_response().track_list().tracks_size(); ++i)
{
TrackInfo track;
track.id = response.audio_collection_response().track_list().tracks(i).id();
track.name = response.audio_collection_response().track_list().tracks(i).name();
track.duration = boost::posix_time::seconds(response.audio_collection_response().track_list().tracks(i).duration_secs());
tracks.push_back( track );
nbAdded++;
}
return nbAdded;
}
private:
@@ -217,7 +371,6 @@ class TestClient
_outputStreamBuf.consume(n);
std::cout << "Client: Message sent!" << std::endl;
}
else
{
@@ -235,7 +388,6 @@ class TestClient
// reserve bytes in output sequence
boost::asio::streambuf::mutable_buffers_type bufs = _inputStreamBuf.prepare(Remote::Header::size);
std::cout << "Client: waiting for header message!" << std::endl;
std::size_t n = boost::asio::read(_socket,
bufs,
boost::asio::transfer_exactly(Remote::Header::size));
@@ -243,7 +395,6 @@ class TestClient
assert(n == Remote::Header::size);
_inputStreamBuf.commit(n);
std::cout << "Client: Header message received!" << std::endl;
}
Remote::Header header;
@@ -255,7 +406,6 @@ class TestClient
// reserve bytes in output sequence
boost::asio::streambuf::mutable_buffers_type bufs = _inputStreamBuf.prepare(header.getSize());
std::cout << "Client: waiting for message!" << std::endl;
std::size_t n = boost::asio::read(_socket,
bufs,
boost::asio::transfer_exactly(header.getSize()));
@@ -263,8 +413,6 @@ class TestClient
assert(n == header.getSize());
_inputStreamBuf.commit(n);
std::cout << "Client: message received!" << std::endl;
if (!message.ParseFromIstream(&is))
throw std::runtime_error("message.ParseFromIstream failed!");
@@ -310,8 +458,32 @@ int main()
BOOST_FOREACH(const GenreInfo& genre, genres)
std::cout << "Genre: '" << genre << "'" << std::endl;
testServer.stop();
// **** Releases ******
std::vector<ReleaseInfo> releases;
client.getReleases(releases, std::vector<uint64_t>(1, 1162));
BOOST_FOREACH(const ReleaseInfo& release, releases)
std::cout << "Release: '" << release << "'" << std::endl;
// **** Tracks ******
/* {
std::vector<TrackInfo> tracks;
client.getTracks(tracks, std::vector<uint64_t>(), std::vector<uint64_t>(), std::vector<uint64_t>());
BOOST_FOREACH(const TrackInfo& track, tracks)
std::cout << "Track: '" << track << "'" << std::endl;
}*/
BOOST_FOREACH(const ArtistInfo& artist, artists)
{
// Get the tracks for each artist
std::vector<TrackInfo> tracks;
client.getTracks(tracks, std::vector<uint64_t>(1, artist.id), std::vector<uint64_t>(), std::vector<uint64_t>());
std::cout << "Artist '" << artist.name << "', nb tracks = " << tracks.size() << std::endl;
BOOST_FOREACH(const TrackInfo& track, tracks)
std::cout << "Track: '" << track << "'" << std::endl;
}
testServer.stop();
}
catch(std::exception& e)
{