AC-DC
view release on metacpan or search on metacpan
lib/AC/DC/IO.pm view on Meta::CPAN
# -*- perl -*-
# Copyright (c) 2009 AdCopy
# Author: Jeff Weisberg
# Created: 2009-Mar-27 10:36 (EDT)
# Function: async multiplexed io
#
# $Id$
# callbacks:
# readable
# writeable
# write_buffer_empty
# timeout
# error => shut()
# shutdown
package AC::DC::IO;
use AC::DC::Debug 'io';
use AC::DC::IO::TCP;
use AC::DC::IO::UDP;
use AC::DC::IO::Forked;
use AC::DC::Callback;
use AC::DC::Sched;
use Time::HiRes 'time';
use Socket;
use Fcntl;
use POSIX;
use bytes;
use strict;
my $BUFSIZ = 8192;
my $maxfn = 0;
my $rvec = "\0\0\0\0";
my $wvec = "\0\0\0\0";
my @fileno;
my @timeout;
my $exitrequested = 0;
sub import {
my $pkg = shift;
my $param = shift;
# import a stats monitor?
if( $param && $param->{monitor} ){
*add_idle = \&{ $param->{monitor} .'::add_idle' };
}
}
sub underway {
return $maxfn;
}
sub closeall {
for my $x (@fileno){
close($x->{fd}) if $x && $x->{fd};
}
}
sub _cleanup {
for my $f (@fileno){
next unless $f;
$f->shut();
}
@fileno = ();
( run in 0.587 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )