/usr/local/CPAN/DJabberd/DJabberd/Delivery.pm
package DJabberd::Delivery;
use strict;
use warnings;
use base 'DJabberd::Plugin';
use Scalar::Util;
sub finalize {
my ($self) = @_;
$self->{vhost} = undef;
$self->SUPER::finalize();
}
sub register {
my ($self, $vhost) = @_;
$self->set_vhost($vhost);
$vhost->register_hook("deliver", sub { $self->deliver(@_) });
}
sub vhost {
return $_[0]->{vhost};
}
sub set_vhost {
my ($self, $vhost) = @_;
Carp::croak("Not a vhost: '$vhost'") unless UNIVERSAL::isa($vhost, "DJabberd::VHost");
$self->{vhost} = $vhost;
Scalar::Util::weaken($self->{vhost});
}
1;