File Coverage

blib/lib/Net/MQTT/Message/Subscribe.pm
Criterion Covered Total %
statement 36 36 100.0
branch n/a
condition n/a
subroutine 12 12 100.0
pod 3 3 100.0
total 51 51 100.0


line stmt bran cond sub pod time code
1 3     3   1597 use strict;
  3         5  
  3         87  
2 3     3   11 use warnings;
  3         18  
  3         113  
3             package Net::MQTT::Message::Subscribe;
4             $Net::MQTT::Message::Subscribe::VERSION = '1.143250';
5             # ABSTRACT: Perl module to represent an MQTT Subscribe message
6              
7              
8 3     3   11 use base 'Net::MQTT::Message';
  3         3  
  3         202  
9 3     3   20 use Net::MQTT::Constants qw/:all/;
  3         4  
  3         14  
10              
11             sub message_type {
12 7     7 1 14 8
13             }
14              
15             sub _default_qos {
16 2     2   4 MQTT_QOS_AT_LEAST_ONCE
17             }
18              
19              
20 4     4 1 11 sub message_id { shift->{message_id} }
21              
22              
23 2     2 1 4 sub topics { shift->{topics} }
24              
25             sub _topics_string {
26 2     2   2 join ',', map { $_->[0].'/'.qos_string($_->[1]) } @{shift->{topics}}
  2         7  
  2         4  
27             }
28              
29             sub _remaining_string {
30 2     2   3 my ($self, $prefix) = @_;
31 2         4 $self->message_id.' '.$self->_topics_string.' '.
32             $self->SUPER::_remaining_string($prefix)
33             }
34              
35             sub _parse_remaining {
36 1     1   1 my $self = shift;
37 1         2 my $offset = 0;
38 1         7 $self->{message_id} = decode_short($self->{remaining}, \$offset);
39 1         5 while ($offset < length $self->{remaining}) {
40 1         1 push @{$self->{topics}}, [ decode_string($self->{remaining}, \$offset),
  1         5  
41             decode_byte($self->{remaining}, \$offset) ];
42             }
43 1         3 substr $self->{remaining}, 0, $offset, '';
44             }
45              
46             sub _remaining_bytes {
47 2     2   3 my $self = shift;
48 2         3 my $o = encode_short($self->message_id);
49 2         3 foreach my $r (@{$self->topics}) {
  2         4  
50 2         3 my ($name, $qos) = @$r;
51 2         4 $o .= encode_string($name);
52 2         4 $o .= encode_byte($qos);
53             }
54             $o
55 2         4 }
56              
57             1;
58              
59             __END__