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