diff options
author | Jesse Luehrs <doy@tozt.net> | 2009-06-26 21:12:14 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2009-06-26 21:16:40 -0500 |
commit | b7b2bd0d4f426cd87588e1e1ff76988de332daad (patch) | |
tree | 8d371bee69b3321d71060b3448ffb5afcdd43020 /lib/Net | |
parent | 22e0d5c339905ecb9ec794690ed4ec835fbe9acd (diff) | |
download | net-termcast-b7b2bd0d4f426cd87588e1e1ff76988de332daad.tar.gz net-termcast-b7b2bd0d4f426cd87588e1e1ff76988de332daad.zip |
better attributehelpers api
Diffstat (limited to 'lib/Net')
-rw-r--r-- | lib/Net/Termcast.pm | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/Net/Termcast.pm b/lib/Net/Termcast.pm index bff3c09..9137c12 100644 --- a/lib/Net/Termcast.pm +++ b/lib/Net/Termcast.pm @@ -37,15 +37,16 @@ has location => ( ); has sessions => ( - traits => ['Collection::ImmutableHash'], + traits => ['Collection::Hash'], is => 'ro', - writer => '_set_sessions', isa => 'HashRef[Net::Termcast::Session]', default => sub { {} }, init_arg => undef, provides => { get => 'session', exists => 'has_session', + keys => 'session_ids', + set => '_set_session', }, ); @@ -96,7 +97,7 @@ sub refresh_menu { $self->_sock->send(' ', 0); $self->_get_menu; return unless $name; - for my $session (keys %{ $self->sessions }) { + for my $session ($self->session_ids) { if ($self->session($session)->name eq $name) { $self->select_session($session); return; @@ -146,15 +147,15 @@ sub _parse_menu { for my $row ($self->screen_rows) { next unless $row =~ /^ ([a-z])\) (\w+) \(idle ([^,]+), connected ([^,]+), (\d+) viewers?, (\d+) bytes?\)/; my ($session, $name, $idle, $connected, $viewers, $bytes) = ($1, $2, $3, $4, $5, $6); - $sessions{$session} = Net::Termcast::Session->new( - name => $name, - idle => $idle, - connected => $connected, - viewers => $viewers, - bytes => $bytes, - ); + $self->_set_session($session, + Net::Termcast::Session->new( + name => $name, + idle => $idle, + connected => $connected, + viewers => $viewers, + bytes => $bytes, + )); } - $self->_set_sessions(\%sessions); } __PACKAGE__->meta->make_immutable; |