File Coverage

blib/lib/PocketIO/Socket.pm
Criterion Covered Total %
statement 21 62 33.8
branch 2 4 50.0
condition 1 2 50.0
subroutine 5 22 22.7
pod 13 18 72.2
total 42 108 38.8


line stmt bran cond sub pod time code
1             package PocketIO::Socket;
2              
3 15     15   802 use strict;
  15         32  
  15         561  
4 15     15   87 use warnings;
  15         30  
  15         503  
5              
6 15     15   564 use PocketIO::Message;
  15         29  
  15         10882  
7              
8             # DEPRECATED
9 0     0 0 0 sub send_message {&send}
10 0     0 0 0 sub send_broadcast { shift->broadcast->send(@_) }
11 0     0 0 0 sub send_broadcast_to_all { shift->sockets->send(@_) }
12 0     0 0 0 sub emit_broadcast { shift->broadcast->emit(@_) }
13 0     0 0 0 sub emit_broadcast_to_all { shift->sockets->emit(@_) }
14              
15             sub new {
16 11     11 1 830 my $class = shift;
17              
18 11         50 my $self = {@_};
19 11         33 bless $self, $class;
20              
21 11   50     93 $self->{data} ||= {};
22              
23 11         54 return $self;
24             }
25              
26 0     0 1 0 sub session_id {&id}
27 0     0 1 0 sub id { $_[0]->{conn}->id }
28              
29             sub set {
30 0     0 1 0 my $self = shift;
31 0         0 my ($key, $value, $cb) = @_;
32              
33 0         0 $self->{data}->{$key} = $value;
34 0 0       0 $cb->($self) if $cb;
35              
36 0         0 return $self;
37             }
38              
39             sub get {
40 0     0 1 0 my $self = shift;
41 0         0 my ($key, $cb) = @_;
42              
43 0         0 my $value = $self->{data}->{$key};
44              
45 0         0 $cb->($self, undef, $value);
46              
47 0         0 return $self;
48             }
49              
50             sub on {
51 6     6 1 27 my $self = shift;
52 6         12 my $event = shift;
53              
54 6         14 my $name = "on_$event";
55              
56 6 100       19 unless (@_) {
57 5         26 return $self->{$name};
58             }
59              
60 1         4 $self->{$name} = $_[0];
61              
62 1         3 return $self;
63             }
64              
65             sub emit {
66 0     0 1   my $self = shift;
67 0           my $event = shift;
68              
69 0           $event = $self->_build_event_message($event, @_);
70              
71 0           $self->send($event);
72              
73 0           return $self;
74             }
75              
76             sub send {
77 0     0 1   my $self = shift;
78              
79 0           $self->{conn}->send(@_);
80              
81 0           return $self;
82             }
83              
84             sub broadcast {
85 0     0 1   my $self = shift;
86              
87 0           return $self->{conn}->broadcast(@_);
88             }
89              
90             sub sockets {
91 0     0 1   my $self = shift;
92              
93 0           return $self->{conn}->sockets(@_);
94             }
95              
96             sub close {
97 0     0 1   my $self = shift;
98              
99 0           $self->{conn}->close;
100              
101 0           return $self;
102             }
103              
104             sub join {
105 0     0 1   my $self = shift;
106 0           my $room = shift;
107              
108 0           return $self->{conn}->pool->room_join($room, $self->{conn});
109             }
110              
111             sub leave {
112 0     0 1   my $self = shift;
113 0           my $room = shift;
114              
115 0           return $self->{conn}->pool->room_leave($room, $self->{conn});
116             }
117              
118             sub _build_event_message {
119 0     0     my $self = shift;
120 0           my $event = shift;
121              
122 0           return PocketIO::Message->new(
123             type => 'event',
124             data => {name => $event, args => [@_]}
125             );
126             }
127              
128             1;
129             __END__