File Coverage

blib/lib/Sprocket/Local.pm
Criterion Covered Total %
statement 32 38 84.2
branch 4 10 40.0
condition 2 9 22.2
subroutine 8 10 80.0
pod 0 3 0.0
total 46 70 65.7


line stmt bran cond sub pod time code
1             package Sprocket::Local;
2              
3 5     5   30 use warnings;
  5         9  
  5         168  
4 5     5   28 use strict;
  5         7  
  5         164  
5              
6 5     5   24 use Sprocket qw( Local::Connection );
  5         9  
  5         28  
7 5     5   29 use Carp qw( croak );
  5         10  
  5         296  
8              
9 5     5   25 use vars qw( $sprocket_local );
  5         10  
  5         464  
10              
11             sub import {
12 5     5   13 my ( $class, $args ) = @_;
13 5         10 my $package = caller();
14              
15 5 50 33     28 croak "Sprocket::Local expects its arguments in a hash ref"
16             if ( $args && ref( $args ) ne 'HASH' );
17              
18 5 50       21 unless ( delete $args->{no_auto_export} ) {
19             {
20 5     5   24 no strict 'refs';
  5         13  
  5         1279  
  5         1171  
21 5         9 *{ $package . '::sprocket_local' } = \$sprocket_local;
  5         1191  
22             }
23             }
24              
25 5 50       22 return if ( delete $args->{no_auto_bootstrap} );
26              
27             # bootstrap
28 5         1254 Sprocket::Local->new( %$args );
29            
30 5         154 return;
31             }
32              
33             sub new {
34 5 50   5 0 1149 return $sprocket_local if ( $sprocket_local );
35 5         11 my $class = shift;
36            
37 5   33     53 my $self = $sprocket_local = bless({
38             @_,
39             pak => { }, # hash of hashes, packages => ids => objects
40             }, ref $class || $class );
41            
42 5         13 return $self;
43             }
44              
45             sub new_connection {
46 0     0 0   my ( $self, $obj, $id ) = @_;
47            
48 0           my $con = $self->{pak}->{$obj}->{$id} =
49             Sprocket::Local::Connection->new(
50             # parent_id => $self->{session_id},
51             __parent_plugin => $obj,
52             __id => $id,
53             );
54              
55 0           return $con;
56             }
57              
58             sub get_connection {
59 0     0 0   my ( $self, $obj, $id ) = @_;
60 0           my $pk = $self->{pak}->{ $obj };
61 0 0 0       return ( $pk && $pk->{ $id } ) ? $pk->{ $id } : $self->new_connection( $obj, $id );
62             }
63              
64             1;
65