File Coverage

blib/lib/P2P/pDonkey/Met_v04.pm
Criterion Covered Total %
statement 45 55 81.8
branch 6 12 50.0
condition 2 6 33.3
subroutine 12 16 75.0
pod 0 8 0.0
total 65 97 67.0


line stmt bran cond sub pod time code
1             # P2P::pDonkey::Met_v04.pm
2             #
3             # Copyright (c) 2003-2004 Alexey klimkin .
4             # All rights reserved.
5             # This program is free software; you can redistribute it and/or
6             # modify it under the same terms as Perl itself.
7             #
8             package P2P::pDonkey::Met_v04;
9              
10 1     1   7493 use 5.006;
  1         5  
  1         38  
11 1     1   6 use strict;
  1         3  
  1         35  
12 1     1   5 use warnings;
  1         2  
  1         140  
13              
14             require Exporter;
15              
16             our $VERSION = '0.05';
17              
18             our @ISA = qw(Exporter);
19              
20             # Items to export into callers namespace by default. Note: do not export
21             # names by default without a very good reason. Use EXPORT_OK instead.
22             # Do not simply export all your public functions/methods/constants.
23              
24             # This allows declaration use P2P::pDonkey ':all';
25             # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
26             # will save memory.
27             our %EXPORT_TAGS = ( 'all' => [ qw(
28             MT_PARTMET_v04
29              
30             unpackPartMet_v04 packPartMet_v04
31             readPartMet_v04 writePartMet_v04
32              
33             unpackKnownMet_v04 packKnownMet_v04
34             readKnownMet_v04 writeKnownMet_v04
35             ) ] );
36              
37             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
38              
39             our @EXPORT = qw(
40            
41             );
42              
43 1     1   1012 use Data::Hexdumper;
  1         2277  
  1         66  
44 1     1   672 use P2P::pDonkey::Meta ':all';
  1         4  
  1         997  
45 1     1   710 use P2P::pDonkey::Meta_v04 ':all';
  1         2  
  1         146  
46 1     1   582 use P2P::pDonkey::Met qw( readFile writeFile MT_KNOWNMET );
  1         11  
  1         98  
47              
48             my $debug = 0;
49              
50 1     1   5 use constant MT_PARTMET_v04 => 0xe0;
  1         3  
  1         642  
51              
52             sub unpackPartMet_v04 {
53 1     1 0 6 my $v = &unpackB;
54 1 50       5 $v == MT_PARTMET_v04 or return;
55 1         7 return &unpackFileInfo_v04;
56             }
57             sub packPartMet_v04 {
58 0     0 0 0 return packB(MT_PARTMET_v04) . &packFileInfo_v04;
59             }
60              
61             sub readPartMet_v04 {
62 1     1 0 10 my ($fname) = @_;
63 1         4 my ($off, $buf, $res);
64 1 50       7 $buf = readFile($fname, MT_PARTMET_v04) or return;
65 1         2 $off = 0;
66 1         7 $res = unpackPartMet_v04($$buf, $off);
67 1         4 $res->{Path} = $fname;
68 1         345 print "$off ", length $$buf, "\n";
69 1 50 33     10 if ($res && $off != length $$buf) {
70 0         0 warn "Unhandled bytes at the end:\n", hexdump(data=>$$buf, start_position=>$off);
71             }
72 1         6 return $res;
73             }
74             sub writePartMet_v04 {
75 0     0 0 0 my ($fname, $p) = @_;
76 0         0 my $buf = packPartMet_v04($p);
77 0         0 return writeFile($fname, \$buf);
78             }
79              
80             sub unpackKnownMet_v04 {
81 1 50   1 0 3 &unpackB == MT_KNOWNMET or return;
82 1         4 return &unpackFileInfoList_v04;
83             }
84             sub packKnownMet_v04 {
85 0     0 0 0 return packB(MT_KNOWNMET) . &packFileInfoList_v04;
86             }
87             sub readKnownMet_v04 {
88 1     1 0 293 my ($fname) = @_;
89 1         2 my ($off, $buf, $res);
90 1 50       6 $buf = readFile($fname, MT_KNOWNMET) or return;
91 1         2 $off = 0;
92 1         5 $res = unpackKnownMet_v04($$buf, $off);
93 1 50 33     8 if ($res && $off != length $$buf) {
94 0         0 warn "Unhandled bytes at the end:\n", hexdump(data=>$$buf, start_position=>$off);
95             }
96 1         3 return $res;
97             }
98             sub writeKnownMet_v04 {
99 0     0 0   my ($fname, $p) = @_;
100 0           my $buf = packKnownMet_v04($p);
101 0           return writeFile($fname, \$buf);
102             }
103              
104             1;