1package DJabberd::Delivery; 2use strict; 3use warnings; 4use base 'DJabberd::Plugin'; 5 6use Scalar::Util; 7 8sub finalize { 9 my ($self) = @_; 10 $self->{vhost} = undef; 11 $self->SUPER::finalize(); 12} 13 14sub register { 15 my ($self, $vhost) = @_; 16 $self->set_vhost($vhost); 17 $vhost->register_hook("deliver", sub { $self->deliver(@_) }); 18} 19 20sub vhost { 21 return $_[0]->{vhost}; 22} 23 24sub set_vhost { 25 my ($self, $vhost) = @_; 26 Carp::croak("Not a vhost: '$vhost'") unless UNIVERSAL::isa($vhost, "DJabberd::VHost"); 27 $self->{vhost} = $vhost; 28 Scalar::Util::weaken($self->{vhost}); 29} 30 311; 32