File Coverage

blib/lib/Net/Lyskom/Object.pm
Criterion Covered Total %
statement 48 53 90.5
branch 5 8 62.5
condition 2 3 66.6
subroutine 6 7 85.7
pod 3 4 75.0
total 64 75 85.3


line stmt bran cond sub pod time code
1             package Net::Lyskom::Object;
2 1     1   8 use Data::Dumper;
  1         9  
  1         64  
3 1     1   6 use strict;
  1         2  
  1         39  
4 1     1   6 use warnings;
  1         2  
  1         669  
5              
6             =head1 NAME
7              
8             Object - Net::Lyskom::Object
9              
10             =head1 SYNOPSIS
11              
12             use base qw{Net::Lyskom::Object};
13              
14             =head1 DESCRIPTION
15              
16             Ur-object from which all other Net::Lyskom object inherits. Is not
17             particularly useful on its own.
18              
19             =head2 Methods
20              
21             =over
22              
23             =item ->as_string
24              
25             Returns the current object as a string, serialized via Data::Dumper.
26             Mostly useful for debugging purposes.
27              
28             =item ->gen_call_boolean($call,@args)
29              
30             Sends call number $call with arguments @args to the server. Returns
31             undef if the server indicates a failure and the object itself if it
32             indicates success.
33              
34             =item ->gen_call_scalar($call,@args)
35              
36             As the previous, except that it returns a simple scalar from the
37             server call.
38              
39             =back
40              
41             =cut
42              
43             sub as_string {
44 0     0 1 0 my $s = shift;
45              
46 0         0 return Dumper $s;
47             }
48              
49              
50             # Generic server call with succeed/fail return semantics
51             sub gen_call_boolean {
52 4     4 1 15 my $self = shift;
53 4         11 my $call = shift;
54 4         15 my $this = $self->{refno}++;
55 4         9 my @res;
56              
57 4         35 $self->send(
58             join " ", $this,$call,@_,"\x0a"
59             );
60 4         1032 @res = $self->getres;
61 4 50       97 if ($self->is_error(@res)) {
62 0         0 return 0;
63             } else {
64 4         1038 return $self;
65             }
66             }
67              
68             sub gen_call_scalar {
69 2     2 1 6 my $self = shift;
70 2         3 my $call = shift;
71 2         8 my $this = $self->{refno}++;
72 2         4 my @res;
73              
74 2         16 $self->send(
75             join " ", $this,$call,@_,"\x0a"
76             );
77 2         322 @res = $self->getres;
78 2 50       19 if ($self->is_error(@res)) {
79 0         0 return 0;
80             } else {
81 2         35 return $res[1];
82             }
83             }
84              
85             sub server_call {
86 7     7 0 19 my $self = shift;
87              
88 7 100 66     47 if (ref($_[0]) && ref($_[0]) eq "ARRAY") {
89 1         3 my ($str, @res);
90              
91 1         3 foreach (@{$_[0]}) {
  1         4  
92 1         5 $str .= join " ",$self->{refno}++,@{$_},"\x0a";
  1         7  
93             }
94 1         7 $self->send($str);
95 1         177 foreach (@{$_[0]}) {
  1         7  
96 1         10 my @tmp = $self->getres;
97 1 50       17 splice @tmp, 0, 1, ($1,$2) if $tmp[0] =~ /^(=|%)(\d+)/;
98 1         20 push @res,[@tmp];
99             }
100 1         5 @res = sort {$a->[1] <=> $b->[1]} @res;
  0         0  
101 1         4 foreach (@res) {
102 1         2 my ($a,$b) = splice @{$_},0,2;
  1         5  
103 1         1 unshift @{$_},$a.$b;
  1         7  
104             }
105 1         9 return @res;
106             } else {
107 6         22 my $this = $self->{refno}++;
108              
109 6         57 $self->send(
110             join " ", $this, @_, "\x0a"
111             );
112 6         5832 return $self->getres;
113             }
114             }
115              
116             1;