Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

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?

Replies are listed 'Best First'.
Re^4: Timeout for timeout for an established connection
by zwon (Abbot) 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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010966]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (4)
As of 2018-02-25 02:11 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (312 votes). Check out past polls.