#!/bin/perl -w

my %pid2send = ();
my %pid2recv = ();


while (<>)
{
    if (/(\d+) SEND: MESSAGE \d+ (\d+)/)
    {
	my $pid = $1;
	my $seq = $2;

#	print "$pid SEND $seq\n";

	$pid2send{$pid} = [] if !defined $pid2send{$pid};
	push (@{$pid2send{$pid}}, $seq);
    }
    elsif (/(\d+) RECV: MESSAGE (\d+) (\d+)/)
    {
	my $recv_pid = $1;
	my $send_pid = $2;
	my $seq = $3;

	$pid2recv{$recv_pid} = () if !defined $pid2recv{$recv_pid};
	$pid2recv{$recv_pid}{$send_pid} = () 
	    if !defined $pid2recv{$recv_pid}{$send_pid};
	push (@{$pid2recv{$recv_pid}{$send_pid}}, $seq);

#	print "$recv_pid RECV $send_pid $seq\n";
    }
    else
    {
	print;
    }
}


print "\n";
print "SENT PACKETS:\n";
my $sender;
foreach $sender (sort keys %pid2send)
{
    my $pktsr = $pid2send{$sender};
    my $pkt;
    print "  $sender: ";
    foreach $pkt (sort { $a <=> $b} (@$pktsr))
    {
	printf "%2d ", $pkt;
    }
    print "\n";
}

print "\n";
print "RECV PACKETS:\n";
my $recver;
foreach $recver (sort keys %pid2recv)
{
    print "$recver\n";

    foreach $sender (sort keys %{$pid2recv{$recver}})
    {
	my $pktsr = $pid2recv{$recver}{$sender};
	my $pkt;
	my $last_pkt = 0;
	print "  $sender: ";
	foreach $pkt (sort { $a <=> $b} (@$pktsr))
	{
	    while ($last_pkt != ($pkt-1))
	    {
		print "   ";
		$last_pkt++;
	    }

	    printf "%2d ", $pkt;
	    $last_pkt = $pkt;
	}
	print "\n";
    }
}
