use strict;
use warnings;
use lib 'lib';
use HTTPEx::Declare;
my $count;
my $flag;
sub init {
$count = 0;
$flag = '1978';
}
sub next_uri {
my $req = shift;
my $uri = $req->uri->clone;
$uri->port( $flag eq '1978' ? '1977' : '1978' );
$uri;
}
sub bad_request {
my $req = shift;
init;
my $uri = next_uri($req);
res( body => sprintf(qq{Bad Request!: %s}, $uri, $uri) );
}
sub handler {
my $req = shift;
my $port = $flag;
return bad_request($req) if $flag eq $req->uri->port;
$flag = $req->uri->port;
$count++;
my $uri = next_uri($req);
print STDERR "ping-pong: $flag, $count\n";
res( body => sprintf(qq{%s: %s
%s\n}, $flag, $count, $uri, $uri) );
}
interface POE => { port => 1977 };
run \&handler;
interface POE => { port => 1978 };
run \&handler;
init;
print "ping-pong start: \n";
POE::Kernel->run;