From 8a94628c86daf743c31f4dcfcf6d592cefaaa9d2 Mon Sep 17 00:00:00 2001 From: Alexandre Morignot <erdnaxeli@cervoi.se> Date: Tue, 9 Feb 2016 22:53:18 +0100 Subject: [PATCH] Set a timeout to a query (6h) --- PlayBot/commands/get/query.pm | 12 ++++++++++++ PlayBot/utils/db/get.pm | 11 +++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/PlayBot/commands/get/query.pm b/PlayBot/commands/get/query.pm index 40b7871..176823e 100644 --- a/PlayBot/commands/get/query.pm +++ b/PlayBot/commands/get/query.pm @@ -59,6 +59,14 @@ has 'id' => ( init_arg => undef ); +has 'date' => ( + is => 'ro', + isa => 'Int', + lazy => 0, + builder => '_build_date', + init_arg => undef, +); + sub _build_is_global { my $self = shift; @@ -109,6 +117,10 @@ sub _build_id { } } +sub _build_date { + return time; +} + sub _equals { my ($self, $query) = @_; diff --git a/PlayBot/utils/db/get.pm b/PlayBot/utils/db/get.pm index 73b3568..57af3bd 100644 --- a/PlayBot/utils/db/get.pm +++ b/PlayBot/utils/db/get.pm @@ -36,14 +36,21 @@ sub get { my $result; if (defined $self->_queries->{$chan} and $self->_queries->{$chan} ~~ $query) { - $result = $self->_get_next($query); + if ($self->_queries->{$chan}->date < time - 3600*6) { + $self->_clean($chan); + $self->_init($query); + $self->_queries->{$chan} = $query; + } + + $query = $self->_queries->{$chan}; } else { $self->_init($query); $self->_queries->{$chan} = $query; - $result = $self->_get_next($query); } + $result = $self->_get_next($query); + # if id was precised, we (and so the user) know there is no more results $self->_clean($chan) if ($query->id >= 0); -- GitLab