1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
#!/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";
}
}
|