Apache-Backend-POE

 view release on metacpan or  search on metacpan

examples/server.pl  view on Meta::CPAN

#!/usr/bin/perl

use lib qw(/home/httpd);

use warnings;
use strict;

use POE qw( Filter::Reference Component::Server::TCP);
use Apache::Backend::POE::Message;

$|++;

my %id_to_name;    # $id_to_name{$id} = $name;
my %name_to_ids;    # $name_to_ids{$name}{$id}++;

my $legend = {
	new => '*',
	ping => '+',
	inactive => '-',
	unknown => '?',
	disconnected => 'X',
};
	
print "Legend:\n";
foreach (sort keys %$legend) {
	print "\t$_ = $legend->{$_}\n";
}

# Matrix works, but not quite what I REALLY want
our $x = Matrix->new({
	actions => $legend,
});

POE::Session->create(
	inline_states => {
		_start => sub {
			POE::Component::Server::TCP->new(
			  Port               => 2021,
			  Address            => '127.0.0.1',
			  ClientFilter       => 'POE::Filter::Reference',
			  ClientConnected    => \&handle_client_connect,
			  ClientDisconnected => \&handle_client_disconnect,
			  ClientError        => \&handle_client_error,
			  ClientInput        => \&handle_client_input,
			  InlineStates => {
			    send             => \&do_send_request,
			  },
			);
			$_[KERNEL]->delay_set(show => 2);
		},
		show => sub {
			print sprintf("\r%s                                                              ", $x->matrix());
			$_[KERNEL]->delay_set(show => 2);
		},
	},
);

$poe_kernel->run();

sub send {
  my ($class, $request) = @_;

  # Addressing a particular service.



( run in 1.621 second using v1.01-cache-2.11-cpan-39bf76dae61 )