The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

$| = 1;
use strict;
use warnings;

use IPC::MPS;
my ($host, $port) = ("127.0.0.1", 9000);

if (fork) {
	sleep 1;
	my $vpid = open_node($host, $port) or die "Cannot open node: $!";

	my $n = 2;
	snd($vpid, "ping", $_)                 foreach 0 .. $n;
	print "Ping ", wt($vpid, "pong"), "\n" foreach 0 .. $n;

	print snd_wt($vpid, "goal"), "\n";
	snd_wt($vpid, "exit");

} else {
	listener($host, $port);
	receive {
		msg ping => sub {
			my ($from, $i) = @_;
			snd($from, "pong", $i + 1);
		};
		msg goal => sub {
			my ($from, $i) = @_;
			snd($from, "goal", "Goal!!!");
		};
		msg exit => sub {
			print "EXIT\n";
			exit;
		};
	};
	exit;
}