=encoding utf8
=head1 NAME
POE::Component::Hailo - A non-blocking wrapper around L<Hailo|Hailo>
=head1 SYNOPSIS
use strict;
use warnings;
use POE qw(Component::Hailo);
POE::Session->create(
package_states => [
(__PACKAGE__) => [ qw(_start hailo_learned hailo_replied) ],
],
);
POE::Kernel->run;
sub _start {
POE::Component::Hailo->spawn(
alias => 'hailo',
Hailo_args => {
storage_class => 'SQLite',
brain_resource => 'hailo.sqlite',
},
);
POE::Kernel->post(hailo => learn =>
['This is a sentence'],
);
}
sub hailo_learned {
POE::Kernel->post(hailo => reply => ['This']);
}
sub hailo_replied {
my $reply = $_[ARG0]->[0];
die "Didn't get a reply" if !defined $reply;
print "Got reply: $reply\n";
POE::Kernel->post(hailo => 'shutdown');
}
=head1 DESCRIPTION
POE::Component::Hailo is a L<POE|POE> component that provides a
non-blocking wrapper around L<Hailo|Hailo>. It accepts the events listed
under L</INPUT> and emits the events listed under L</OUTPUT>.
=head1 METHODS
=head2 C<spawn>
This is the constructor. It takes the following arguments:
B<'alias'>, an optional alias for the component's session.
B<'Hailo_args'>, a hash reference of arguments to pass to L<Hailo|Hailo>'s
constructor.
B<'options'>, a hash reference of options to pass to
L<POE::Session|POE::Session>'s constructor.
=head2 C<session_id>
Takes no arguments. Returns the POE Session ID of the component.
=head1 INPUT
This component reacts to the following POE events:
=head2 C<learn>
=head2 C<train>
=head2 C<reply>
=head2 C<learn_reply>
=head2 C<stats>
=head2 C<save>
All these events take two arguments. The first is an array reference of
arguments which will be passed to the L<Hailo|Hailo> method of the same
name. The second (optional) is a hash reference. You'll get this hash
reference back with the corresponding event listed under L</OUTPUT>.
=head2 C<shutdown>
Takes no arguments. Terminates the component.
=head1 OUTPUT
The component will post the following event to your session:
=head2 C<hailo_learned>
=head2 C<hailo_trained>
=head2 C<hailo_replied>
=head2 C<hailo_learn_replied>
=head2 C<hailo_stats>
=head2 C<hailo_saved>
C<ARG0> is an array reference of arguments returned by the underlying
L<Hailo|Hailo> method. C<ARG1> is the context hashref you provided (if any).
=head1 AUTHOR
Hinrik E<Ouml>rn SigurE<eth>sson, hinrik.sig@gmail.com
=head1 LICENSE AND COPYRIGHT
Copyright 2010 Hinrik E<Ouml>rn SigurE<eth>sson
This program is free software, you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut