summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGianni Ceccarelli <dakkar@thenautilus.net>2013-11-19 15:46:44 +0000
committerGianni Ceccarelli <dakkar@thenautilus.net>2013-11-19 15:46:44 +0000
commita94d7b7ff1d1d042127cd5f8dda8426425eee648 (patch)
tree5a3e8f240492c2c7f551ddeb6199e9c295c0f227
parentmore layout fixes (diff)
downloadHomePanel-a94d7b7ff1d1d042127cd5f8dda8426425eee648.tar.gz
HomePanel-a94d7b7ff1d1d042127cd5f8dda8426425eee648.tar.bz2
HomePanel-a94d7b7ff1d1d042127cd5f8dda8426425eee648.zip
trying to remove leaks
-rw-r--r--lib/HomePanel/AsyncUA.pm1
-rw-r--r--lib/HomePanel/Driver.pm58
2 files changed, 36 insertions, 23 deletions
diff --git a/lib/HomePanel/AsyncUA.pm b/lib/HomePanel/AsyncUA.pm
index b12e8d9..d74e4aa 100644
--- a/lib/HomePanel/AsyncUA.pm
+++ b/lib/HomePanel/AsyncUA.pm
@@ -6,6 +6,7 @@ use Net::Async::HTTP;
has loop => (
is => 'ro',
required => 1,
+ weak => 1,
);
has agent => (
diff --git a/lib/HomePanel/Driver.pm b/lib/HomePanel/Driver.pm
index 4cce5ee..c196486 100644
--- a/lib/HomePanel/Driver.pm
+++ b/lib/HomePanel/Driver.pm
@@ -1,7 +1,7 @@
package HomePanel::Driver;
use Moo;
use 5.10.0;
-use IO::Async::Loop;
+use IO::Async::Loop::EV;
use IO::Async::Timer::Periodic;
use HomePanel::AsyncUA;
use WebService::ForecastIo;
@@ -11,14 +11,18 @@ use WebService::TFL::TubeStatus;
use HomePanel::Render;
use Types::Path::Tiny qw(AbsFile AbsPath);
use Try::Tiny;
+#use Devel::Cycle;
+use curry::weak;
use namespace::autoclean;
has loop => ( is => 'lazy' );
-sub _build_loop { IO::Async::Loop->new() }
+sub _build_loop { IO::Async::Loop::EV->new() }
has user_agent => ( is => 'lazy' );
sub _build_user_agent {
- HomePanel::AsyncUA->new({loop=>$_[0]->loop});
+ #HomePanel::AsyncUA->new({loop=>$_[0]->loop});
+ require LWP::UserAgent;
+ return LWP::UserAgent->new(timeout=>20);
}
has forecast_request => (
@@ -47,13 +51,15 @@ sub _build_forecast_timer {
my ($self) = @_;
$self->_new_timer(
900,
- sub {
- $self->forecast_response(
- $self->forecast->request(
- $self->forecast_request
- )
- );
- },
+ $self->curry::weak::forecast_timer_cb(),
+ );
+}
+sub forecast_timer_cb {
+ my ($self) = @_;
+ $self->forecast_response(
+ $self->forecast->request(
+ $self->forecast_request
+ )
);
}
@@ -81,15 +87,17 @@ sub _build_bus_timer {
my ($self) = @_;
$self->_new_timer(
30,
- sub {
- $self->bus_response(
- $self->bus->request(
- $self->bus_request
- )
- );
- },
+ $self->curry::weak::bus_timer_cb(),
);
}
+sub bus_timer_cb {
+ my ($self) = @_;
+ $self->bus_response(
+ $self->bus->request(
+ $self->bus_request
+ )
+ );
+};
has tube => (
is => 'lazy',
@@ -105,11 +113,13 @@ sub _build_tube_timer {
my ($self) = @_;
$self->_new_timer(
300,
- sub {
- $self->tube_response(
- $self->tube->request()
- );
- },
+ $self->curry::weak::tube_timer_cb(),
+ );
+}
+sub tube_timer_cb {
+ my ($self) = @_;
+ $self->tube_response(
+ $self->tube->request()
);
}
@@ -118,7 +128,7 @@ sub _build_writer_timer {
my ($self) = @_;
$self->_new_timer(
5,
- sub { $self->write_page },
+ $self->curry::weak::write_page,
);
}
@@ -160,6 +170,8 @@ sub write_page {
})->render;
$self->output_file->spew_utf8($output);
+
+ #find_cycle($self);
}
sub start {