Created
December 22, 2015 22:13
-
-
Save isutton/44f0922e5d48c77542c2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package Server; | |
sub process { | |
my ( $check_name ) = @_; | |
my $reactor = Reactor->new; | |
my $callback = $server->callback_for( 'my_check' ); | |
# Callback popula $reactor através da interface estipulada. | |
$callback->( $reactor ); | |
# Faz o que tiver que fazer com o $reactor | |
} | |
# start() começa a escutar onde tu quer que ele escute: provavelmente | |
# é o treco que interage com Nagios. Em cada requisição do Nagios por | |
# um check, executa a função determinada pelo nome do check, e passa | |
# uma instância de Reactor (na verdade, qualquer coisa que implemente | |
# os métodos definidos pela interface do Reactor. | |
sub start {} | |
package Reactor; | |
sub warning {} | |
sub success {} | |
sub critical {} | |
sub metric {} | |
package MyAppCheck; | |
sub my_check { | |
my ( $reactor ) = @_; | |
# Nunca olhamos para o tipo do $reactor, apenas temos que assumir | |
# que implementa a interface necessária. | |
$reactor->critical( "Oh noes!" ); | |
$reactor->metric({ foo => 'bar' }); | |
} | |
package main; | |
# Server é fornecido pela API | |
my $server = Server->new; | |
$server->register( my_check => \&MyAppCheck::my_check ); | |
$server->run; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment