package POE::Declare::Meta::Message;


=head1 NAME

POE::Declare::Meta::Message - A named message that is emitted to the parent


  # Declare the message (in the child)
  declare ShutdownComplete => 'Message';
  # Emit the message (in the child)
  $self->send_message('ShutdownComplete', 'param');
  # Register for the message (in the parent)
  my $child = Foo::Child->new(
      ShutdownComplete => $self->lookback('child_completed'),


Each L<POE::Declare> object contains a series of declared messages.

Message registration is done (primarily) during object creation, and
the parameter checking for each message parameter is checked in a defined


use 5.008007;
use strict;
use warnings;
use POE::Declare::Meta::Param ();

use vars qw{$VERSION @ISA};
	$VERSION = '0.59';
	@ISA     = 'POE::Declare::Meta::Param';

sub as_perl { <<"END_PERL" }
sub $_[0]->{name} {
	\$_[0]->{$_[0]->{name}} or return '';
	\$_[0]->{$_[0]->{name}}->( \$_[0]->{Alias}, \@_[1..\$#_] );
	return 1;



=head1 SUPPORT

Bugs should be always be reported via the CPAN bug tracker at


For other issues, or commercial enhancement or support, contact the author.

=head1 AUTHORS

Adam Kennedy E<lt>adamk@cpan.orgE<gt>

=head1 SEE ALSO

L<POE>, L<POE::Declare>


Copyright 2006 - 2012 Adam Kennedy.

This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the
LICENSE file included with this module.