AnyEvent-Finger

 view release on metacpan or  search on metacpan

lib/AnyEvent/Finger.pm  view on Meta::CPAN

package AnyEvent::Finger;

use strict;
use warnings;
use base qw( Exporter );

our @EXPORT_OK = qw( finger_client finger_server );

# ABSTRACT: Simple asynchronous finger client and server
our $VERSION = '0.14'; # VERSION


sub finger_client ($$$;$)
{
  my($hostname) = shift;
  require AnyEvent::Finger::Client;
  AnyEvent::Finger::Client
    ->new( hostname => $hostname )
    ->finger(@_);
  ();
}


# keep the server object in scope so that
# we don't unbind from the port.  If you
# don't want this, then use the OO interface
# for ::Server instead.
my $keep = [];

sub finger_server ($;$)
{
  require AnyEvent::Finger::Server;
  my $server = AnyEvent::Finger::Server
    ->new
    ->start(@_);
  push @$keep, $server;
  $server;
}

1;

__END__

=pod

=encoding UTF-8

=head1 NAME

AnyEvent::Finger - Simple asynchronous finger client and server

=head1 VERSION

version 0.14

=head1 SYNOPSIS

client:

 use AnyEvent::Finger qw( finger_client );
 
 finger_client 'localhost', 'username', sub {
   my($lines) = @_;
   print "[response]\n";
   print join "\n", @$lines;
 };

server:

 use AnyEvent::Finger qw( finger_server );
 
 my %users = (
   grimlock => 'ME GRIMLOCK HAVE ACCOUNT ON THIS MACHINE',
   optimus  => 'Freedom is the right of all sentient beings.',
 );
 
 finger_server sub {
   my $tx = shift; # isa AnyEvent::Finger::Transaction
   if($tx->req->listing_request)
   {
     # respond if remote requests list of users
     $tx->res->say('users: ', keys %users);
   }
   else
   {



( run in 0.832 second using v1.01-cache-2.11-cpan-2398b32b56e )