Net-Rendezvous-Publish-Backend-Avahi

 view release on metacpan or  search on metacpan

lib/Net/Rendezvous/Publish/Backend/Avahi.pm  view on Meta::CPAN

use warnings;

use Net::DBus;

sub new {
    my $class = shift;
    my $self  = {@_};
    bless $self, $class;

    my $bus = Net::DBus->system;
    $self->{service} = $bus->get_service('org.freedesktop.Avahi');
    $self->{server} =
      $self->{service}->get_object('/', 'org.freedesktop.Avahi.Server');

    return $self;
}

sub publish {
    my $self = shift;
    my %args = @_;

    # AddService argument signature is aay.  Split first into key/value
    # pairs at character \x01 ...

lib/Net/Rendezvous/Publish/Backend/Avahi.pm  view on Meta::CPAN

    }

    # ... then map characters to bytes and add DBus type.
    if (@{$txt}) {
        foreach my $t (@{$txt}) {
            map { $_ = Net::DBus::dbus_byte(ord($_)) } @{$t};
        }
    }

    my $group = $self->{service}->get_object($self->{server}->EntryGroupNew,
        'org.freedesktop.Avahi.EntryGroup');
    $group->AddService(
        Net::DBus::dbus_int32(-1), Net::DBus::dbus_int32(-1),
        Net::DBus::dbus_uint32(0), $args{name},
        $args{type},               $args{domain},
        $args{host},               Net::DBus::dbus_uint16($args{port}),
        $txt
    );

    $group->Commit;



( run in 0.740 second using v1.01-cache-2.11-cpan-299005ec8e3 )