Skip to content

Instantly share code, notes, and snippets.

@leedo
Created November 20, 2011 20:36
Show Gist options
  • Save leedo/1380860 to your computer and use it in GitHub Desktop.
Save leedo/1380860 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use AnyEvent;
use AnyEvent::Handle;
use AnyEvent::Socket;
my $cv = AE::cv;
my @commands = (
{
name => "connected_users",
command => q/scalar $::catlady->connected_users/,
label => "connected users",
draw => "AREASTACK",
},
{
name => "disconnected_users",
command => q/scalar($::catlady->all_cats) - scalar($::catlady->connected_users)/,
label => "disconnected users",
draw => "AREASTACK",
},
{
name => "streams",
command => q/scalar map {@{$_->streams}} $::catlady->all_cats/,
label => "total streams",
draw => "LINE2",
},
{
name => "active_users",
command => q/scalar $::catlady->all_cats/,
label => "total active users",
draw => "LINE2",
}
);
if ($ARGV[0] and $ARGV[0] eq "config") {
print "graph_category catlady\n";
print "graph_title Catlady user stats\n";
for my $command (@commands) {
print "$command->{name}.label $command->{label}\n";
print "$command->{name}.draw $command->{draw}\n";
print "$command->{name}.min 0\n";
}
exit 0;
}
my @lines;
my $h = AnyEvent::Handle->new(
fh => $fh,
connect => ["unix/","/home/leedo/src/catlady/var/shell.sock"],
on_connect => sub {
my $h = shift;
$h->push_read(regex => qr/^>/m, sub {
for my $command (@commands) {
$cv->begin;
$h->push_write("$command->{command}\n");
$h->push_read(regex => qr/^>/m, sub {
my ($value) = $_[1] =~ /(\d+)/;
push @lines, "$command->{name}.value $value";
$cv->end;
});
}
});
}
);
$cv->recv;
print join "\n", @lines;
print "\n";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment