Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
POE::Component::IRC::PUsernContributedEPeromponent::IRC::Plugin::FollowTail(3)

NAME
       POE::Component::IRC::Plugin::FollowTail - A PoCo-IRC plugin to follow
       the tail	of an ever-growing file

SYNOPSIS
	use POE	qw(Component::IRC Component::IRC::Plugin::FollowTail);

	my $nickname = 'Flibble' . $$;
	my $ircname = 'Flibble the Sailor Bot';
	my $ircserver =	'irc.blahblahblah.irc';
	my $filename = '/some/such/file/here';
	my @channels = ( '#Blah', '#Foo', '#Bar' );

	my $irc	= POE::Component::IRC->spawn(
	    nick => $nickname,
	    server => $ircserver,
	    port => $port,
	    ircname => $ircname,
	) or die "Oh noooo! $!";

	POE::Session->create(
	    package_states => [
		main =>	[ qw(_start irc_001 irc_tail_input irc_tail_error irc_tail_reset) ],
	    ],
	);

	 $poe_kernel->run();

	sub _start {
	    $irc->plugin_add( 'FollowTail' => POE::Component::IRC::Plugin::FollowTail->new(
		filename => $filename,
	    ));
	    $irc->yield( register => 'all' );
	    $irc->yield( connect => { }	);
	    return;
	}

	sub irc_001 {
	    $irc->yield( join => $_ ) for @channels;
	    return;
	}

	sub irc_tail_input {
	    my ($kernel, $sender, $filename, $input) = @_[KERNEL, SENDER, ARG0,	ARG1];
	    $kernel->post( $sender, 'privmsg', $_, "$filename: $input" ) for @channels;
	    return;
	}

	sub irc_tail_error {
	    my ($kernel, $sender, $filename, $errnum, $errstring)
		= @_[KERNEL, SENDER, ARG0 .. ARG2];
	    $kernel->post( $sender, 'privmsg', $_, "$filename: ERROR: $errnum $errstring" ) for	@channels;
	    $irc->plugin_del( 'FollowTail' );
	    return;
	}

	sub irc_tail_reset {
	    my ($kernel, $sender, $filename) = @_[KERNEL, SENDER, ARG0];
	    $kernel->post( $sender, 'privmsg', $_, "$filename: RESET EVENT" ) for @channels;
	    return;
	}

DESCRIPTION
       POE::Component::IRC::Plugin::FollowTail is a POE::Component::IRC	plugin
       that uses POE::Wheel::FollowTail	to follow the end of an	ever-growing
       file. It	generates "irc_tail_" prefixed events for each new record that
       is appended to its file.

METHODS
   "new"
       Takes two arguments:

       'filename', the name of the file	to tail, mandatory;

       'filter', a POE::Filter object to pass to POE::Wheel::FollowTail,
       optional;

       Returns a plugin	object suitable	for feeding to POE::Component::IRC's
       "plugin_add" method.

OUTPUT EVENTS
       The plugin generates the	following additional POE::Component::IRC
       events:

   "irc_tail_input"
       Emitted for every complete record read. "ARG0" will be the filename,
       "ARG1" the record which was read.

   "irc_tail_error"
       Emitted whenever	an error occurs. "ARG0"	will be	the filename, "ARG1"
       and "ARG2" hold numeric and string values for $!, respectively.

   "irc_tail_reset"
       Emitted every time a file is reset. "ARG0" will be the filename.

AUTHOR
       Chris 'BinGOs' Williams

SEE ALSO
       POE::Component::IRC

       POE::Wheel::FollowTail

perl v5.32.0			  20POE::Component::IRC::Plugin::FollowTail(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | OUTPUT EVENTS | AUTHOR | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=POE::Component::IRC::Plugin::FollowTail&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help