Mojo-Netdata
view release on metacpan or search on metacpan
lib/Mojo/Netdata/Collector.pm view on Meta::CPAN
$self->emit_data;
logf(debug => 'Will update in %0.3fs...', $next_time - time);
return Mojo::Promise->timer($next_time - time);
})->then(sub {
delete $self->{recurring_update_p};
return $self->recurring_update_p;
});
}
sub register ($self, $config, $netdata) { }
sub update_p ($self) { Mojo::Promise->resolve }
sub emit_data ($self) {
my @stdout = map { $self->charts->{$_}->data_to_string } sort keys %{$self->charts};
return $self->emit(stdout => join '', @stdout);
}
sub emit_charts ($self) {
my @stdout = map { $self->charts->{$_}->to_string } sort keys %{$self->charts};
return $self->emit(stdout => join '', @stdout);
}
lib/Mojo/Netdata/Collector.pm view on Meta::CPAN
Mojo::Netdata::Collector - Base class for Mojo::Netdata collectors
=head1 SYNOPSIS
package Mojo::Netdata::Collector::CoolBeans;
use Mojo::Base 'Mojo::Netdata::Collector', -signatures;
has type => 'ice_cool';
sub register ($self, $config, $netdata) { ... }
sub update_p ($self) { ... }
1;
=head1 DESCRIPTION
L<Mojo::Netdata::Collector> has basic functionality which should be inherited
by L<Mojo::Netdata> collectors. See L<Mojo::Netdata::Collector::HTTP> for an
(example) implementation.
=head1 ATTRIBUTES
lib/Mojo/Netdata/Collector/HTTP.pm view on Meta::CPAN
my @jobs = ref $config->{jobs} eq 'HASH' ? %{$config->{jobs}} : @{$config->{jobs}};
while (my $url = shift @jobs) {
my $job = $self->_make_job($url => ref $jobs[0] eq 'HASH' ? shift @jobs : {}, $config);
push @{$self->jobs}, $job if $job;
}
return @{$self->jobs} ? $self : undef;
}
sub update_p ($self) {
my ($ua, @p) = ($self->ua);
return Mojo::Promise->map(
{concurrency => $self->concurrency},
sub {
my ($job, $t0) = ($_, time);
my $tx = $ua->build_tx(@{$job->[0]});
return $ua->start_p($tx)->then(sub ($tx) {
$job->[1]->($tx, $t0);
})->catch(sub ($err) {
( run in 0.403 second using v1.01-cache-2.11-cpan-4d4bc49f3ae )