]> git.ktnx.net Git - mpd-feeder.git/blobdiff - lib/App/MPD/Feeder.pm
more log priority adjustments
[mpd-feeder.git] / lib / App / MPD / Feeder.pm
index c951c70e8dc6134a7cbdda903042445e43f17d9f..b6c82033a2f11cfe9cdde3208aa092f35dae8f60 100644 (file)
@@ -5,7 +5,6 @@ class App::MPD::Feeder;
 
 use App::MPD::Feeder::DB;
 use App::MPD::Feeder::Options;
-use App::MPD::Feeder::WorkQueue;
 use DBD::Pg;
 use DBI;
 use Getopt::Long;
@@ -91,6 +90,8 @@ method init_mpd {
         }
     );
 
+    my $loop = $mpd->loop;
+
     my $int_signal_handler = sub {
         state $signal_count = 0;
         $signal_count++;
@@ -103,12 +104,12 @@ method init_mpd {
 
         $log->debug("Signal received. Stopping loop");
         $quit_requested = 1;
-        $mpd->loop->stop('quit');
+        $loop->stop('quit');
         $self->break_idle;
     };
 
     for (qw(TERM INT)) {
-        $mpd->loop->add(
+        $loop->add(
             IO::Async::Signal->new(
                 name       => $_,
                 on_receipt => $int_signal_handler,
@@ -116,19 +117,19 @@ method init_mpd {
         );
     }
 
-    $mpd->loop->add(
+    $loop->add(
         IO::Async::Signal->new(
             name       => 'HUP',
             on_receipt => sub {
                 $log->debug("SIGHUP received. Scheduling reload");
                 $reload_requested = 1;
-                $mpd->loop->stop('reload');
+                $loop->stop('reload');
                 $self->break_idle;
             },
         )
     );
 
-    $mpd->loop->add(
+    $loop->add(
         IO::Async::Signal->new(
             name       => 'USR1',
             on_receipt => sub {
@@ -180,7 +181,7 @@ method update_db( $force = undef ) {
             $new_songs,   $new_artists,   $new_albums
         ) = $self->db->finish_update;
 
-        $log->info(
+        $log->notice(
             "Updated data about $song_count songs (including $new_songs new), "
                 . "$total_artists artists (including $new_artists new) "
 
@@ -204,12 +205,13 @@ method queue_songs( $num = undef ) {
         my $present = $mpd->send('playlist')->get // [];
         $present = scalar(@$present);
 
-        $log->notice( "Playlist contains $present songs. Wanted: "
-                . $opt->target_queue_length );
         if ( $present < $opt->target_queue_length ) {
+            $log->notice( "Playlist contains $present songs. Wanted: "
+                    . $opt->target_queue_length );
             $self->queue_songs( $opt->target_queue_length - $present );
         }
         else {
+            $log->info("Playlist contains $present songs");
             $playlist_needs_filling = 0;
         }
 
@@ -229,7 +231,7 @@ method queue_songs( $num = undef ) {
         );
     }
 
-    $log->info("About to add $num songs to the playlist");
+    $log->debug("About to add $num songs to the playlist");
 
     my @paths;
     for my $song (@list) {
@@ -238,7 +240,7 @@ method queue_songs( $num = undef ) {
         push @paths, $path;
     }
 
-    $log->debug( "Adding " . join( ', ', map {"«$_»"} @paths ) );
+    $log->notice( "Adding " . join( ', ', map {"«$_»"} @paths ) );
 
     # MPD needs raw bytes
     utf8::encode($_) for @paths;
@@ -258,7 +260,7 @@ method queue_songs( $num = undef ) {
 }
 
 method reexec {
-    $log->notice("disconnecting and re-starting");
+    $log->info("disconnecting and re-starting");
     $db->disconnect;
     undef $mpd;
 
@@ -344,23 +346,25 @@ method pulse {
 
     $log->trace('got out of idle');
 
-    if ( $idler->is_done ) {
-        my $result = $idler->get;
-        undef $idler;
-        if ( ref $result and $result->{changed} ) {
-            my $changed = $result->{changed};
-            $changed = [$changed] unless ref $changed;
+    if ($idler) {
+        if ( $idler->is_done ) {
+            my $result = $idler->get;
+            undef $idler;
+            if ( ref $result and $result->{changed} ) {
+                my $changed = $result->{changed};
+                $changed = [$changed] unless ref $changed;
 
-            $mpd->emit($_) for @$changed;
+                $mpd->emit($_) for @$changed;
+            }
+        }
+        elsif ( $idler->is_cancelled ) {
+            $log->trace("idle was cancelled");
+            undef $idler;
+        }
+        elsif ( $idler->is_failed ) {
+            $log->warn("idle failed: ".$idler->failure);
+            undef $idler;
         }
-    }
-    elsif ( $idler->is_cancelled ) {
-        $log->trace("idle was cancelled");
-        undef $idler;
-    }
-    elsif ( $idler->is_failed ) {
-        $log->warn("idle failed: ".$idler->failure);
-        undef $idler;
     }
 
     $mpd->loop->stop;
@@ -371,12 +375,15 @@ method run_loop {
 
     $self->init_mpd;
 
-    $mpd->loop->add(
+    my $loop = $mpd->loop;
+
+    $loop->add(
         IO::Async::Timer::Periodic->new(
             interval => 60,
             on_tick  => sub {
                 if (!$mpd_connected) {
                     $log->trace("Not connected to MPD. Skipping alive check.");
+                    $loop->stop('disconnected');
                     return;
                 }