From a94d7b7ff1d1d042127cd5f8dda8426425eee648 Mon Sep 17 00:00:00 2001 From: Gianni Ceccarelli Date: Tue, 19 Nov 2013 15:46:44 +0000 Subject: trying to remove leaks --- lib/HomePanel/AsyncUA.pm | 1 + lib/HomePanel/Driver.pm | 58 +++++++++++++++++++++++++++++------------------- 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 { -- cgit v1.2.3