#!/usr/bin/env perl
# vim:ts=4:sw=4:expandtab

use strict;
use warnings;
use v5.10;
# libanyevent-perl
use AnyEvent;
# libjson-xs-perl
use JSON::XS;
# libconfig-general-perl
use Config::General;
# core
use Carp;
use Data::Dumper;
use IO::Handle;

my $errorfh = IO::Handle->new_from_fd(3, 'w');
$errorfh->autoflush(1);

# reads in the whole STDIN
sub slurp {
    local $/;
    <STDIN>;
}

my $config_str = slurp();
say "config = *$config_str*";

my $conf = Config::General->new(
    -String => $config_str,
    # open all files in utf-8 mode
    -UTF8 => 1,
    # normalize yes, on, 1, true and no, off, 0, false to 1 resp. 0
    -AutoTrue => 1,
    # case-insensitive key names by lowercasing everything
    -LowerCaseNames => 1,
    # provide the ->array, ->hash, etc. methods
    -ExtendedAccess => 1,
);

my $interval = 60;

# Disable buffering.
$| = 1;

sub signal_error {
    my ($severity, $message) = @_;
    say $errorfh encode_json({
        severity => $severity,
        message => $message
    });
}

my $main_timer;
$main_timer = AnyEvent->timer(
    after => 0,
    interval => $interval,
    cb => sub {
        signal_error('critical', 'Hello, this is the "fail" plugin. If you read this message, your setup seems to be working :-).');
    });

# Run forever.
AnyEvent->condvar->recv;
