diff options
-rw-r--r-- | server/cldb.erl | 12 | ||||
-rw-r--r-- | server/media.erl | 23 |
2 files changed, 21 insertions, 14 deletions
diff --git a/server/cldb.erl b/server/cldb.erl new file mode 100644 index 0000000..0f9f407 --- /dev/null +++ b/server/cldb.erl @@ -0,0 +1,12 @@ +% The clientdatabase + +-module(cldb). +-export([init/0]). +-record(user, {name, passwd, votes}). + +init() -> + mnesia:create_schema([node()]), + mnesia:start(), + mnesia:create_table(track, [{attributes, record_info(fields, track)}]), + io:format("Userdb up and running \n"). + diff --git a/server/media.erl b/server/media.erl index b3b8e0f..10fed99 100644 --- a/server/media.erl +++ b/server/media.erl @@ -43,7 +43,7 @@ read_files([],Total,Fail) -> io:format("Total: ~w, Failed: ~w~n", [Total, Fail]) start_playing() -> {Artist, Title} = search_best(media:all(), 0,0), - play(Artist, Title, "muh"). + play(Artist, Title). % Basic insertion of entrys into the database. Some entries are left out because they are 0 or false. @@ -87,18 +87,13 @@ all() -> % In practice we are going to set their locked variable to true and spawn a process which will unlock them after a certain time. % Well this could be considered abuse. -play(Artist, Title, Callback) -> +play(Artist, Title) -> [Head|_] = ask(Artist, Title), {_, Title, Artist, _, _, Fp} = Head, Port = erlang:open_port({spawn_executable, "/usr/bin/mplayer"}, [{args, [Fp]}, exit_status]), - - % lock the song - F = fun() -> - New = Head#track{locked = 1}, - mnesia:write(New) - end, - mnesia:transaction(F), - + reset_votes(Artist, Title), + lock_process(Artist, Title), + io:format("playing: ~s, Artist: ~s~n", [Title, Artist]), receive {Port, {exit_status, 0}} -> start_playing(); @@ -140,8 +135,8 @@ reset_votes(Artist, Title) -> lock(Artist, Title) -> F = fun() -> [Head|_] = ask(Artist, Title), - Votes = Head#track.votes - 1, - New = Head#track{votes = Votes}, + Votes = Head#track.lock = true, + New = Head#track{lock = Votes}, mnesia:write(New) end, mnesia:transaction(F). @@ -149,8 +144,8 @@ lock(Artist, Title) -> unlock(Artist, Title) -> F = fun() -> [Head|_] = ask(Artist, Title), - Votes = Head#track.votes -1, - New = Head#track{votes = Votes}, + Votes = Head#track.lock = false, + New = Head#track{lock = Votes}, mnesia:write(New) end, mnesia:transaction(F). |