App-Alice
view release on metacpan or search on metacpan
lib/App/Alice/Stream.pm view on Meta::CPAN
package App::Alice::Stream;
use JSON;
use Time::HiRes qw/time/;
use Try::Tiny;
use Any::Moose;
use strict;
use warnings;
has queue => (
is => 'rw',
isa => 'ArrayRef[HashRef]',
default => sub { [] },
);
sub clear_queue {$_[0]->queue([])}
sub enqueue {push @{shift->queue}, @_}
sub queue_empty {return @{$_[0]->queue} == 0}
has [qw/offset last_send start_time/]=> (
is => 'rw',
isa => 'Num',
default => 0,
);
has [qw/delayed started closed/] => (
is => 'rw',
isa => 'Bool',
default => 0,
);
has 'seperator' => (
is => 'ro',
isa => 'Str',
default => 'xalicex',
);
has 'timer' => (
is => 'rw',
);
has 'writer' => (
is => 'rw',
required => 1,
);
has min_bytes => (
is => 'ro',
default => 1024,
);
sub BUILD {
my $self = shift;
my $local_time = time;
my $remote_time = $self->start_time || $local_time;
$self->offset($local_time - $remote_time);
my $writer = $self->writer->(
[200, ['Content-Type' => 'multipart/mixed; boundary='.$self->seperator.'; charset=utf-8']]
);
$self->writer($writer);
$self->_send;
}
sub _send {
( run in 0.722 second using v1.01-cache-2.11-cpan-39bf76dae61 )