Beefy Boxes and Bandwidth Generously Provided by pair Networks Frank
Problems? Is your data what you think it is?
 
PerlMonks  

Re^3: Timeout for timeout for an established connection

by 0day (Sexton)
on Dec 30, 2012 at 22:52 UTC ( #1010966=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Timeout for timeout for an established connection
in thread Timeout for an established connection

my $index = $#noreply +1; push @noreply, $obj = HTTP_Request->new($ip, $packet, sub { delete $noreply[$index]; .............. }); .............. .............. my $check_time = time(); my $timeout = 30; while (1) { $poll->poll(5); for my $sock ( $poll->handles( POLLHUP | POLLERR | POLLNVAL )) { $sock->error(); } for my $sock ( $poll->handles(POLLIN) ) { $sock->recv(); } for my $sock ($poll->handles(POLLOUT)) { $sock->send(); } if (time > ($check_time + $timeout)) { $check_time = time; my $i; foreach (@noreply) { if ($_ && $_->ttl < $check_time) { delete $noreply[$i]; $_->close; } ++$i; } } }
Maybe someone has a more elegant solution?


Comment on Re^3: Timeout for timeout for an established connection
Download Code
Re^4: Timeout for timeout for an established connection
by zwon (Monsignor) on Dec 31, 2012 at 10:01 UTC

    If you willing to switch to AnyEvent, then AnyEvent::Handle allows you to set inactivity timeouts for reading and writing just as you want.

    Also, calling delete on array values is deprecated. I'd suggest something like:

    @noreply = grep { $_ && $_->ttl >= $check_time } @noreply;

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010966]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (13)
As of 2014-04-23 23:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (556 votes), past polls