Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^2: Timeout for timeout for an established connection

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


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

How to do it? Check each socket? Suppose, there is 1000 sockets. Poll said that two of them are available to read. During 0.2 seconds, will be available for 2 more. You say every time check the other 998?
  • Comment on Re^2: Timeout for timeout for an established connection

Replies are listed 'Best First'.
Re^3: Timeout for timeout for an established connection
by 0day (Sexton) on Dec 30, 2012 at 22:52 UTC
    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?

      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://1010941]
help
Chatterbox?
[Lady_Aleena]: Corion, I knew that, I was just giving Discipulus a hard time.
choroba likes the story at the end of the node
[choroba]: reminds me of the days at the bank
[Corion]: Lady_Aleena: Hehe ;-D
[Lady_Aleena]: Corion, it was PerlMonks who kept pushing me to get Linux, so now I know some of the commands to use in word play.
[Corion]: Lady_Aleena: :-D
[Lady_Aleena]: Corion, so do you think the gods would be open to taking over Cookies should I disappear for too long a time?

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (8)
As of 2017-04-26 08:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I'm a fool:











    Results (471 votes). Check out past polls.