AnyEvent-DAAP-Server
view release on metacpan or search on metacpan
is => 'rw',
default => '13950142391337751523', # XXX magic value (from Net::DAAP::Server)
);
has tracks => (
is => 'rw',
isa => 'HashRef[AnyEvent::DAAP::Server::Track]',
default => sub { +{} },
);
has global_playlist => (
is => 'rw',
isa => 'AnyEvent::DAAP::Server::Playlist',
default => sub { AnyEvent::DAAP::Server::Playlist->new },
);
has playlists => (
is => 'rw',
isa => 'HashRef[AnyEvent::DAAP::Server::Playlist]',
default => sub { +{} },
);
isa => 'Router::Simple',
default => sub { Router::Simple->new },
);
__PACKAGE__->meta->make_immutable;
no Any::Moose;
sub BUILD {
my $self = shift;
$self->add_playlist($self->global_playlist);
}
sub publish {
my $self = shift;
$self->rendezvous_service; # build
}
sub setup {
my $self = shift;
foreach my $connection (@{ $self->connections }) {
$connection->pause_cv->send if $connection->pause_cv;
}
}
# XXX dmap_itemid is used as only its lower 3 bytes
sub add_track {
my ($self, $track) = @_;
$self->tracks->{ $track->dmap_itemid & 0xFFFFFF } = $track;
$self->global_playlist->add_track($track);
}
sub add_playlist {
my ($self, $playlist) = @_;
$self->playlists->{ $playlist->dmap_itemid & 0xFFFFFF } = $playlist;
}
### Handlers
sub _server_info {
[ 'dmap.returnedcount' => scalar @$tracks ],
[ 'dmap.listing' => $tracks ]
]
]]);
}
sub _database_containers {
my ($self, $connection, $req, $args) = @_;
# $args->{database_id};
my @playlists = map { $_->as_dmap_struct } $self->global_playlist, values %{ $self->playlists };
$connection->respond_dmap([[
'daap.databaseplaylists' => [
[ 'dmap.status' => 200 ],
[ 'dmap.updatetype' => 0 ],
[ 'dmap.specifiedtotalcount' => 1 ],
[ 'dmap.returnedcount' => 1 ],
[ 'dmap.listing' => \@playlists ],
]
]]);
inc/Module/Install.pm view on Meta::CPAN
);
}
my @exts = @{$self->{extensions}};
unless ( @exts ) {
@exts = $self->{admin}->load_all_extensions;
}
my %seen;
foreach my $obj ( @exts ) {
while (my ($method, $glob) = each %{ref($obj) . '::'}) {
next unless $obj->can($method);
next if $method =~ /^_/;
next if $method eq uc($method);
$seen{$method}++;
}
}
my $who = $self->_caller;
foreach my $name ( sort keys %seen ) {
local $^W;
lib/AnyEvent/DAAP/Server.pm view on Meta::CPAN
is => 'rw',
default => '13950142391337751523', # XXX magic value (from Net::DAAP::Server)
);
has tracks => (
is => 'rw',
isa => 'HashRef[AnyEvent::DAAP::Server::Track]',
default => sub { +{} },
);
has global_playlist => (
is => 'rw',
isa => 'AnyEvent::DAAP::Server::Playlist',
default => sub { AnyEvent::DAAP::Server::Playlist->new },
);
has playlists => (
is => 'rw',
isa => 'HashRef[AnyEvent::DAAP::Server::Playlist]',
default => sub { +{} },
);
lib/AnyEvent/DAAP/Server.pm view on Meta::CPAN
isa => 'Router::Simple',
default => sub { Router::Simple->new },
);
__PACKAGE__->meta->make_immutable;
no Any::Moose;
sub BUILD {
my $self = shift;
$self->add_playlist($self->global_playlist);
}
sub publish {
my $self = shift;
$self->rendezvous_service; # build
}
sub setup {
my $self = shift;
lib/AnyEvent/DAAP/Server.pm view on Meta::CPAN
foreach my $connection (@{ $self->connections }) {
$connection->pause_cv->send if $connection->pause_cv;
}
}
# XXX dmap_itemid is used as only its lower 3 bytes
sub add_track {
my ($self, $track) = @_;
$self->tracks->{ $track->dmap_itemid & 0xFFFFFF } = $track;
$self->global_playlist->add_track($track);
}
sub add_playlist {
my ($self, $playlist) = @_;
$self->playlists->{ $playlist->dmap_itemid & 0xFFFFFF } = $playlist;
}
### Handlers
sub _server_info {
lib/AnyEvent/DAAP/Server.pm view on Meta::CPAN
[ 'dmap.returnedcount' => scalar @$tracks ],
[ 'dmap.listing' => $tracks ]
]
]]);
}
sub _database_containers {
my ($self, $connection, $req, $args) = @_;
# $args->{database_id};
my @playlists = map { $_->as_dmap_struct } $self->global_playlist, values %{ $self->playlists };
$connection->respond_dmap([[
'daap.databaseplaylists' => [
[ 'dmap.status' => 200 ],
[ 'dmap.updatetype' => 0 ],
[ 'dmap.specifiedtotalcount' => 1 ],
[ 'dmap.returnedcount' => 1 ],
[ 'dmap.listing' => \@playlists ],
]
]]);
( run in 0.673 second using v1.01-cache-2.11-cpan-49f99fa48dc )