package DJabberd::Component::Node; use base qw(DJabberd::Agent::Node); use DJabberd::Util qw(exml); use strict; use warnings; use DJabberd::Log; our $logger = DJabberd::Log->get_logger(); sub set_config_component { $_[0]->{component_node_component} = $_[1]; } sub finalize { $logger->logdie("A component node requires a Component") unless ref($_[0]->{component_node_component}); $_[0]->SUPER::finalize; } sub handles_destination { my ($self, $to_jid, $vhost) = @_; return ($to_jid->node eq $self->nodename && $to_jid->domain eq $self->component->domain); } sub bare_jid { return new DJabberd::JID($_[0]->nodename."@".$_[0]->component->domain); } sub resource_jid { my ($self, $resourcename) = @_; return new DJabberd::JID($self->bare_jid->as_string()."/".$resourcename); } sub component { return $_[0]->{component_node_component}; } 1;