Async-Selector

 view release on metacpan or  search on metacpan

lib/Async/Selector/Watcher.pm  view on Meta::CPAN

package Async::Selector::Watcher;
use strict;
use warnings;
use Scalar::Util qw(weaken);
use Carp;

sub new {
    my ($class, $selector, $conditions) = @_;
    my $self = bless {
        selector => $selector,
        conditions => $conditions,
        check_all => 0,
    }, $class;
    weaken($self->{selector});
    return $self;
}

sub detach {
    my ($self) = @_;
    $self->{selector} = undef;
}

sub get_check_all {
    my ($self) = @_;
    return $self->{check_all};
}

sub set_check_all {
    my ($self, $check_all) = @_;
    $self->{check_all} = $check_all;
}

sub cancel {
    my ($self) = @_;
    return $self if not defined($self->{selector});
    my $selector = $self->{selector};
    $self->detach();
    $selector->cancel($self);
    return $self;
}

sub conditions {
    my ($self) = @_;
    return %{$self->{conditions}};
}

sub resources {
    my ($self) = @_;
    return keys %{$self->{conditions}};
}

sub active {
    my ($self) = @_;
    return defined($self->{selector});
}

our $VERSION = '1.03';

1;

=pod

=head1 NAME

Async::Selector::Watcher - representation of resource watch in Async::Selector

=head1 VERSION

1.03

=head1 SYNOPSIS


    use Async::Selector;



( run in 1.942 second using v1.01-cache-2.11-cpan-39bf76dae61 )