File Coverage

blib/lib/XAS/Lib/POE/PubSub.pm
Criterion Covered Total %
statement 6 24 25.0
branch n/a
condition n/a
subroutine 2 6 33.3
pod 4 4 100.0
total 12 34 35.2


line stmt bran cond sub pod time code
1             package XAS::Lib::POE::PubSub;
2              
3             our $VERSION = '0.01';
4              
5 1     1   3 use POE;
  1         2  
  1         4  
6              
7             use XAS::Class
8 1         4 debug => 0,
9             version => $VERSION,
10             base => 'XAS::Singleton',
11             utils => ':validation',
12 1     1   213 ;
  1         1  
13              
14             #use Data::Dumper;
15              
16             # ----------------------------------------------------------------------
17             # Public Methods
18             # ----------------------------------------------------------------------
19              
20             sub subscribe {
21 0     0 1   my $self = shift;
22 0           my ($session, $channel) = validate_params(\@_, [
23             1,
24             { optional => 1, default => 'default' }
25             ]);
26              
27 0           $self->{'registry'}->{$channel}->{$session} = $session;
28              
29             }
30              
31             sub unsubscribe {
32 0     0 1   my $self = shift;
33 0           my ($session, $channel) = validate_params(\@_, [
34             1,
35             { optional => 1, default => 'default' }
36             ]);
37              
38 0           delete $self->{'registry'}->{$channel}->{$session};
39              
40             }
41              
42             sub publish {
43 0     0 1   my $self = shift;
44 0           my $p = validate_params(\@_, {
45             -event => 1,
46             -args => { optional => 1, default => undef },
47             -channel => { optional => 1, default => 'default' },
48             });
49              
50 0           my $event = $p->{'event'};
51 0           my $channel = $p->{'channel'};
52 0           my $args = $p->{'args'};
53              
54 0           foreach my $session (keys %{$self->{'registry'}->{$channel}}) {
  0            
55              
56 0           $poe_kernel->post($session, $event, $args);
57              
58             }
59              
60             }
61              
62             # ----------------------------------------------------------------------
63             # Private Methods
64             # ----------------------------------------------------------------------
65              
66             sub init {
67 0     0 1   my $class = shift;
68              
69 0           my $self = $class->SUPER::init(@_);
70              
71 0           $self->{'registry'} = {};
72              
73 0           return $self;
74              
75             }
76              
77             1;
78              
79             __END__