Skip to content

Commit

Permalink
Create Reflex::Role::Interval, and reify it as Reflex::Interval. Need…
Browse files Browse the repository at this point in the history
…ed to change a lot of code and docs that used Reflex::Timer, which has bee deleted.
  • Loading branch information
rcaputo committed Jul 11, 2010
1 parent 5cf73d9 commit bbf149d
Show file tree
Hide file tree
Showing 32 changed files with 211 additions and 238 deletions.
6 changes: 3 additions & 3 deletions docs/intro/AsyncAwhileRole.pm
@@ -1,6 +1,6 @@
package AsyncAwhileRole; package AsyncAwhileRole;
use Reflex::Role; use Reflex::Role;
use Reflex::Timer; use Reflex::Interval;
use Reflex::Callbacks qw(cb_method); use Reflex::Callbacks qw(cb_method);


attribute_parameter name => "name"; attribute_parameter name => "name";
Expand All @@ -16,7 +16,7 @@ role {


my $timer_member = "_${role_name}_timer"; my $timer_member = "_${role_name}_timer";


has $timer_member => ( is => 'rw', isa => 'Reflex::Timer' ); has $timer_member => ( is => 'rw', isa => 'Reflex::Interval' );


method_emit $cb_done => "done"; method_emit $cb_done => "done";


Expand All @@ -25,7 +25,7 @@ role {
after BUILD => sub { after BUILD => sub {
my $self = shift; my $self = shift;
$self->$timer_member( $self->$timer_member(
Reflex::Timer->new( Reflex::Interval->new(
auto_repeat => 0, auto_repeat => 0,
interval => $self->$awhile(), interval => $self->$awhile(),
on_tick => cb_method($self, $cb_done), on_tick => cb_method($self, $cb_done),
Expand Down
8 changes: 4 additions & 4 deletions docs/intro/intro.pod
Expand Up @@ -240,12 +240,12 @@ renamed AfterAwhileClass, with the new asynchronous role.


As mentioned earlier, most of the work is done in the role itself. As mentioned earlier, most of the work is done in the role itself.
This AsyncAwhileRole replaces the blocking sleep() with a non-blocking This AsyncAwhileRole replaces the blocking sleep() with a non-blocking
Reflex::Timer object. Later we'll introduce magic to make it more Reflex::Interval object. Later we'll introduce magic to make it more
concise. concise.


package AsyncAwhileRole; package AsyncAwhileRole;
use Reflex::Role; use Reflex::Role;
use Reflex::Timer; use Reflex::Interval;
use Reflex::Callbacks qw(cb_method); use Reflex::Callbacks qw(cb_method);


attribute_parameter name => "name"; attribute_parameter name => "name";
Expand All @@ -261,7 +261,7 @@ concise.


my $timer_member = "_${role_name}_timer"; my $timer_member = "_${role_name}_timer";


has $timer_member => ( is => 'rw', isa => 'Reflex::Timer' ); has $timer_member => ( is => 'rw', isa => 'Reflex::Interval' );


method_emit $cb_done => "done"; method_emit $cb_done => "done";


Expand All @@ -270,7 +270,7 @@ concise.
after BUILD => sub { after BUILD => sub {
my $self = shift; my $self = shift;
$self->$timer_member( $self->$timer_member(
Reflex::Timer->new( Reflex::Interval->new(
auto_repeat => 0, auto_repeat => 0,
interval => $self->$awhile(), interval => $self->$awhile(),
on_tick => cb_method($self, $cb_done), on_tick => cb_method($self, $cb_done),
Expand Down
16 changes: 8 additions & 8 deletions docs/syntax.pm
Expand Up @@ -23,19 +23,19 @@ $self->emit( event => \%args );
=cut =cut


my $timer = Reflex::Timer->new( my $timer = Reflex::Interval->new(
interval => 5, interval => 5,
auto_repeat => 1, auto_repeat => 1,
on_tick => cb_coderef(\&subroutine), on_tick => cb_coderef(\&subroutine),
); );


my $timer = Reflex::Timer->new( my $timer = Reflex::Interval->new(
interval => 5, interval => 5,
auto_repeat => 1, auto_repeat => 1,
on_tick => cb_method($self, "method"), on_tick => cb_method($self, "method"),
); );


my $timer = Reflex::Timer->new( my $timer = Reflex::Interval->new(
interval => 5, interval => 5,
auto_repeat => 1, auto_repeat => 1,
on_tick => cb_method("class", "method"), on_tick => cb_method("class", "method"),
Expand All @@ -45,7 +45,7 @@ my $timer = Reflex::Timer->new(
=cut =cut


my $timer = Reflex::Timer->new( my $timer = Reflex::Interval->new(
interval => 5, interval => 5,
auto_repeat => 1, auto_repeat => 1,
cb_role($self, "rolename"), cb_role($self, "rolename"),
Expand All @@ -55,7 +55,7 @@ my $timer = Reflex::Timer->new(
=cut =cut


my $timer = Reflex::Timer->new( my $timer = Reflex::Interval->new(
interval => 5, interval => 5,
auto_repeat => 1, auto_repeat => 1,
# cb_promise # cb_promise
Expand All @@ -69,7 +69,7 @@ while (my $event = $timer->next()) {
=cut =cut


my $timer = Reflex::Timer->new( my $timer = Reflex::Interval->new(
interval => 5, interval => 5,
auto_repeat => 1, auto_repeat => 1,
promise => 1, promise => 1,
Expand Down Expand Up @@ -100,14 +100,14 @@ use strict;


use lib qw(../lib); use lib qw(../lib);


use Reflex::Timer; use Reflex::Interval;
use Reflex::Callbacks qw(cb_promise); use Reflex::Callbacks qw(cb_promise);
use ExampleHelpers qw(eg_say); use ExampleHelpers qw(eg_say);


my $watcher = Reflex::Base->new(); my $watcher = Reflex::Base->new();


my $promise; my $promise;
my $timer = Reflex::Timer->new( my $timer = Reflex::Interval->new(
interval => 1, interval => 1,
auto_repeat => 1, auto_repeat => 1,
); );
Expand Down
12 changes: 6 additions & 6 deletions eg/eg-03-observer-roles.pl
Expand Up @@ -6,12 +6,12 @@
# beginning with "on_${role}" in the watcher object are used to handle # beginning with "on_${role}" in the watcher object are used to handle
# the emitter's events. # the emitter's events.
# #
# In this test case, the Reflex::Timer object is assigned the role # In this test case, the Reflex::Interval object is assigned the role
# "waitron". It emits "tick" events that are handled by the watcher's # "waitron". It emits "tick" events that are handled by the watcher's
# on_waitron_tick() method. # on_waitron_tick() method.
# #
# An object may watch another in more than one role. In this test # An object may watch another in more than one role. In this test
# case, the Reflex::Timer is also watched in the "waitroff" role. # case, the Reflex::Interval is also watched in the "waitroff" role.
# The on_waitroff_tick() method is also invoked. # The on_waitroff_tick() method is also invoked.


use warnings; use warnings;
Expand All @@ -20,29 +20,29 @@


use Test::More tests => 10; use Test::More tests => 10;


### Define a class to watch events from a Reflex::Timer. ### Define a class to watch events from a Reflex::Interval.


{ {
package Watcher; package Watcher;


use Moose; use Moose;
extends 'Reflex::Base'; extends 'Reflex::Base';


use Reflex::Timer; use Reflex::Interval;
use Reflex::Callbacks qw(cb_role); use Reflex::Callbacks qw(cb_role);


use Test::More; use Test::More;


has timer => ( has timer => (
isa => 'Maybe[Reflex::Timer]', isa => 'Maybe[Reflex::Interval]',
is => 'rw', is => 'rw',
); );


sub BUILD { sub BUILD {
my $self = $_[0]; my $self = $_[0];


$self->timer( $self->timer(
Reflex::Timer->new( Reflex::Interval->new(
interval => 0.1, interval => 0.1,
auto_repeat => 1, auto_repeat => 1,
cb_role($self, "waitron"), cb_role($self, "waitron"),
Expand Down
6 changes: 3 additions & 3 deletions eg/eg-09-emitter-trait.pl
Expand Up @@ -10,7 +10,7 @@
package Counter; package Counter;
use Moose; use Moose;
extends 'Reflex::Base'; extends 'Reflex::Base';
use Reflex::Timer; use Reflex::Interval;
use Reflex::Trait::Observed; use Reflex::Trait::Observed;
use Reflex::Trait::EmitsOnChange; use Reflex::Trait::EmitsOnChange;


Expand All @@ -23,15 +23,15 @@


has ticker => ( has ticker => (
traits => ['Reflex::Trait::Observed'], traits => ['Reflex::Trait::Observed'],
isa => 'Reflex::Timer|Undef', isa => 'Maybe[Reflex::Interval]',
is => 'rw', is => 'rw',
); );


sub BUILD { sub BUILD {
my $self = shift; my $self = shift;


$self->ticker( $self->ticker(
Reflex::Timer->new( Reflex::Interval->new(
interval => 0.1, interval => 0.1,
auto_repeat => 1, auto_repeat => 1,
) )
Expand Down
6 changes: 3 additions & 3 deletions eg/eg-10-setup.pl
Expand Up @@ -11,7 +11,7 @@
package Counter; package Counter;
use Moose; use Moose;
extends 'Reflex::Base'; extends 'Reflex::Base';
use Reflex::Timer; use Reflex::Interval;
use Reflex::Trait::Observed; use Reflex::Trait::Observed;
use Reflex::Trait::EmitsOnChange; use Reflex::Trait::EmitsOnChange;


Expand All @@ -24,10 +24,10 @@


has ticker => ( has ticker => (
traits => ['Reflex::Trait::Observed'], traits => ['Reflex::Trait::Observed'],
isa => 'Reflex::Timer', isa => 'Reflex::Interval',
is => 'rw', is => 'rw',
setup => sub { setup => sub {
Reflex::Timer->new( interval => 0.1, auto_repeat => 1 ) Reflex::Interval->new( interval => 0.1, auto_repeat => 1 )
}, },
); );


Expand Down
4 changes: 2 additions & 2 deletions eg/eg-14-synopsis.pl
Expand Up @@ -8,10 +8,10 @@
package App; package App;
use Moose; use Moose;
extends 'Reflex::Base'; extends 'Reflex::Base';
use Reflex::Timer; use Reflex::Interval;


has ticker => ( has ticker => (
isa => 'Reflex::Timer', isa => 'Reflex::Interval',
is => 'rw', is => 'rw',
setup => { interval => 1, auto_repeat => 1 }, setup => { interval => 1, auto_repeat => 1 },
traits => [ 'Reflex::Trait::Observed' ], traits => [ 'Reflex::Trait::Observed' ],
Expand Down
4 changes: 2 additions & 2 deletions eg/eg-16-timer-inheritance.pl
Expand Up @@ -7,9 +7,9 @@
{ {
package App; package App;
use Moose; use Moose;
extends 'Reflex::Timer'; extends 'Reflex::Interval';


sub on_timer_tick { before on_tick => sub {
print "tick at ", scalar(localtime), "...\n"; print "tick at ", scalar(localtime), "...\n";
} }
} }
Expand Down
11 changes: 8 additions & 3 deletions eg/eg-17-inheritance-no-moose.pl
Expand Up @@ -8,11 +8,16 @@


{ {
package App; package App;
use Reflex::Timer; use Reflex::Interval;
use base qw(Reflex::Timer); use base qw(Reflex::Interval);


sub on_timer_tick { sub on_tick {
print "tick at ", scalar(localtime), "...\n"; print "tick at ", scalar(localtime), "...\n";

# Auto-repeat is defined in the callback.
# It doesn't work when we override the callback entirely.
# TODO - How can this be mitigated? after() in the role?
shift()->repeat();
} }
} }


Expand Down
4 changes: 2 additions & 2 deletions eg/eg-18-synopsis-no-moose.pl
Expand Up @@ -9,14 +9,14 @@
{ {
package App; package App;
use Reflex::Base; use Reflex::Base;
use Reflex::Timer; use Reflex::Interval;
use Reflex::Callbacks qw(cb_role); use Reflex::Callbacks qw(cb_role);
use base qw(Reflex::Base); use base qw(Reflex::Base);


sub BUILD { sub BUILD {
my $self = shift; my $self = shift;


$self->{ticker} = Reflex::Timer->new( $self->{ticker} = Reflex::Interval->new(
interval => 1, interval => 1,
auto_repeat => 1, auto_repeat => 1,
); );
Expand Down
4 changes: 2 additions & 2 deletions eg/eg-30-promise-timer.pl
Expand Up @@ -5,11 +5,11 @@


use lib qw(../lib); use lib qw(../lib);


use Reflex::Timer; use Reflex::Interval;
use Reflex::Callbacks qw(cb_promise); use Reflex::Callbacks qw(cb_promise);
use ExampleHelpers qw(eg_say); use ExampleHelpers qw(eg_say);


my $timer = Reflex::Timer->new( my $timer = Reflex::Interval->new(
interval => 1, interval => 1,
auto_repeat => 1, auto_repeat => 1,
); );
Expand Down
4 changes: 2 additions & 2 deletions eg/eg-31-promise-object.pl
Expand Up @@ -5,12 +5,12 @@


use lib qw(../lib); use lib qw(../lib);


use Reflex::Timer; use Reflex::Interval;
use ExampleHelpers qw(eg_say); use ExampleHelpers qw(eg_say);
use ReflexPromise; use ReflexPromise;


my $p = ReflexPromise->new( my $p = ReflexPromise->new(
object => Reflex::Timer->new( object => Reflex::Interval->new(
interval => 1, interval => 1,
auto_repeat => 1, auto_repeat => 1,
) )
Expand Down
4 changes: 2 additions & 2 deletions eg/eg-32-promise-tiny.pl
Expand Up @@ -9,10 +9,10 @@


use lib qw(../lib); use lib qw(../lib);


use Reflex::Timer; use Reflex::Interval;
use ExampleHelpers qw(eg_say); use ExampleHelpers qw(eg_say);


my $t = Reflex::Timer->new( my $t = Reflex::Interval->new(
interval => 1, interval => 1,
auto_repeat => 1, auto_repeat => 1,
); );
Expand Down

0 comments on commit bbf149d

Please sign in to comment.