package POE::Component::Jabber::ProtocolFactory; use warnings; use strict; use Carp; use POE::Component::Jabber::XMPP; use POE::Component::Jabber::Legacy; use POE::Component::Jabber::J14; use POE::Component::Jabber::J2; use constant { 'JABBERD14_COMPONENT' => 0, 'LEGACY' => 1, 'JABBERD20_COMPONENT' => 2, 'XMPP' => 4, }; use base('Exporter'); our @EXPORT = qw/ JABBERD14_COMPONENT JABBERD20_COMPONENT LEGACY XMPP /; our $VERSION = '3.00'; sub get_guts($) { my $type = shift(@_); Carp::confess('No argument provided') if not defined($type); Carp::confess('Invalid Helper type: ' . $type) if $type =~ /\D+/; if($type == +XMPP) { return POE::Component::Jabber::XMPP->new(); } elsif ($type == +LEGACY) { return POE::Component::Jabber::Legacy->new(); } elsif ($type == +JABBERD14_COMPONENT) { return POE::Component::Jabber::J14->new(); } elsif ($type == +JABBERD20_COMPONENT) { return POE::Component::Jabber::J2->new(); } else { Carp::confess('Unknown Helper type: ' . $type); } } 1; __END__ =pod =head1 NAME POE::Component::Jabber::ProtocolFactory =head1 SYNOPSIS PCJ::ProtocolFactory is a protected helper class used to instantiate specific Protocols based on exported constants =head1 DESCRIPTION PCJ internally uses PCJ::ProtocolFactory to turn the ConnectionType argument into a Protocol object used to implement the various supported dialects. This is why the accepted arguments are exported as constants upon use. =head1 FUNCTIONS By default no functions are exported beyond the accepted arguments. Only a package function is available: =over 4 =item get_guts [Protected] get_guts takes a single argument and that is a defined constant exported by this module. It returns a PCJ::Protocol object. See PCJ::Protocol for details on its methods and implementing different Protocols. =back =head1 CONSTANTS Below are the constants that are exported. Their names are rather self-explanatory: =over 4 =item XMPP =item LEGACY =item JABBERD14_COMPONENT =item JABBERD20_COMPONENT =back =head1 NOTES All supported Protocol types are implemented herein. get_guts will confess if it receives an invalid argument. =head1 AUTHOR (c) Copyright 2007-2009 Nicholas Perez. Released under the GPL. =cut