version 1.14, 2003/07/03 02:10:18
|
version 1.15, 2003/07/15 02:07:05
|
Line 27
|
Line 27
|
# http://www.lon-capa.org/ |
# http://www.lon-capa.org/ |
# |
# |
# |
# |
# new lonc handles n requestors spread out bver m connections to londs. |
# new lonc handles n request out bver m connections to londs. |
# This module is based on the Event class. |
# This module is based on the Event class. |
# Development iterations: |
# Development iterations: |
# - Setup basic event loop. (done) |
# - Setup basic event loop. (done) |
Line 46
|
Line 46
|
|
|
# Change log: |
# Change log: |
# $Log$ |
# $Log$ |
|
# Revision 1.15 2003/07/15 02:07:05 foxr |
|
# Added code for lonc/lond transaction timeouts. Who knows if it works right. |
|
# The intent is for a timeout to fail any transaction in progress and kill |
|
# off the sockt that timed out. |
|
# |
# Revision 1.14 2003/07/03 02:10:18 foxr |
# Revision 1.14 2003/07/03 02:10:18 foxr |
# Get all of the signals to work correctly. |
# Get all of the signals to work correctly. |
# |
# |
Line 286 sub ShowStatus {
|
Line 291 sub ShowStatus {
|
|
|
=pod |
=pod |
|
|
|
=head 2 SocketTimeout |
|
|
|
Called when an action on the socket times out. The socket is |
|
destroyed and any active transaction is failed. |
|
|
|
|
|
=cut |
|
sub SocketTimeout { |
|
my $Socket = shift; |
|
|
|
KillSocket($Socket); |
|
} |
|
|
|
=pod |
|
|
=head2 Tick |
=head2 Tick |
|
|
Invoked each timer tick. |
Invoked each timer tick. |
Line 310 sub Tick {
|
Line 330 sub Tick {
|
} else { |
} else { |
$IdleSeconds = 0; # Reset idle count if not idle. |
$IdleSeconds = 0; # Reset idle count if not idle. |
} |
} |
|
# |
|
# For each inflight transaction, tick down its timeout counter. |
|
# |
|
foreach $item (keys %ActiveTransactions) { |
|
my $Socket = $ActiveTransactions{$item}->getServer(); |
|
$Socket->Tick(); |
|
} |
# Do we have work in the queue, but no connections to service them? |
# Do we have work in the queue, but no connections to service them? |
# If so, try to make some new connections to get things going again. |
# If so, try to make some new connections to get things going again. |
# |
# |
Line 448 sub ClientWritable {
|
Line 474 sub ClientWritable {
|
|
|
} else { # Partial string sent. |
} else { # Partial string sent. |
$Watcher->data(substr($Data, $result)); |
$Watcher->data(substr($Data, $result)); |
|
if($result == 0) { # client hung up on us!! |
|
Log("INFO", "lonc pipe client hung up on us!"); |
|
$Watcher->cancel; |
|
$Socket->shutdown(2); |
|
$Socket->close(); |
|
} |
} |
} |
|
|
} else { # Error of some sort... |
} else { # Error of some sort... |