File Coverage

blib/lib/SyslogScan/Delivery.pm
Criterion Covered Total %
statement 6 71 8.4
branch 0 26 0.0
condition n/a
subroutine 2 8 25.0
pod 0 6 0.0
total 8 111 7.2


line stmt bran cond sub pod time code
1             package SyslogScan::Delivery;
2              
3             $VERSION = 0.20;
4 0     0 0   sub Version { $VERSION };
5              
6 4     4   22 use strict;
  4         19  
  4         138  
7 4     4   18 use Carp;
  4         6  
  4         4030  
8              
9             my @LEGAL_KEY_LIST = qw( Date Size Id Sender ReceiverList Instance );
10             my $VERSION = 1;
11             my $HEADER = "DeliveryV$VERSION";
12              
13             sub new
14             {
15 0     0 0   my $type = shift;
16 0           my %selfHash = @_;
17              
18 0           my $self = \%selfHash;
19              
20 0           my $key;
21 0           foreach $key (keys %$self)
22             {
23 0 0         grep($_ eq $key,@LEGAL_KEY_LIST) or
24             die "illegal key for Delivery object: $key";
25             }
26 0           bless($self,$type);
27 0           return $self;
28             }
29              
30             sub persist
31             {
32 0     0 0   my $self = shift;
33 0           my $outFH = shift;
34              
35 0           print $outFH "$HEADER start\n";
36 0           my $key;
37 0           foreach $key (@LEGAL_KEY_LIST)
38             {
39 0 0         next if $key eq 'ReceiverList';
40 0           my $val = $$self{$key};
41 0 0         $val =~ /\n/ and
42             die "value $val contains embedded newline, cannot persist";
43 0           print $outFH $val, "\n";
44             }
45 0           print $outFH "ReceiverList:\n";
46 0           my $receiver;
47 0           foreach $receiver (@{$$self{ReceiverList}})
  0            
48             {
49 0 0         $receiver =~ /\n/ and
50             die "value $receiver contains embedded newline, cannot persist";
51 0 0         $receiver =~ /^$HEADER/ and
52             die "value $receiver looks too much like boundary marks, cannot persist";
53 0           print $outFH "$receiver\n";
54             }
55              
56 0           print $outFH "$HEADER end\n";
57             }
58              
59             sub restore
60             {
61 0     0 0   my $type = shift;
62 0           my $inFH = shift;
63              
64 0 0         defined $inFH or croak "filehandle not defined";
65              
66 0           my $line = <$inFH>;
67 0 0         if ($line ne "$HEADER start\n")
68             {
69 0 0         $line or return undef; # at eof
70              
71             # not at eof; something is fishy
72 0           die "expected $HEADER start, got $line";
73             }
74              
75 0           my $self = { ReceiverList => [] };
76 0           bless ($self, $type);
77              
78 0           my $key;
79 0           foreach $key (@LEGAL_KEY_LIST)
80             {
81 0 0         next if $key eq 'ReceiverList';
82 0           $line = <$inFH>;
83 0           chop($line);
84 0           $$self{$key} = $line;
85             }
86 0           $line = <$inFH>;
87              
88 0 0         $line eq "ReceiverList:\n" or die "expected ReceiverList but got $line";
89              
90 0           my $receiver;
91 0           while (defined($line = <$inFH>))
92             {
93 0 0         return $self if $line eq "$HEADER end\n";
94 0 0         die "missed $HEADER end line" if $line eq "$HEADER start\n";
95 0           chop($line);
96 0           push(@{$$self{ReceiverList}},$line);
  0            
97             }
98              
99 0           die "never saw $HEADER end line";
100             }
101              
102             sub summary
103             {
104 0     0 0   my $self = shift;
105              
106 0           return "$$self{Size} bytes from $$self{Sender} to " .
107 0           join(' ',@{$$self{ReceiverList}}) . "\n";
108             }
109              
110             sub dump
111             {
112 0     0 0   my $self = shift;
113 0           my $retString = "";
114              
115 0           my $key;
116 0           foreach $key (keys %$self)
117             {
118 0           $retString .= "$key is ";
119 0 0         if (ref($$self{$key}) eq "ARRAY")
120             {
121 0           $retString .= join(' ',@{$$self{$key}});
  0            
122             }
123             else
124             {
125 0           $retString .= $$self{$key};
126             }
127 0           $retString .= "\n";
128             }
129 0           return $retString;
130             }
131              
132             1;
133              
134             __END__