Annotation of loncom/LondTransaction.pm, revision 1.4

1.1       foxr        1: #   This module defines and implements a class that represents
                      2: #   a connection to a lond daemon.
                      3: #
1.4     ! foxr        4: # $Id: LondTransaction.pm,v 1.3 2003/05/13 01:01:49 foxr Exp $
1.1       foxr        5: #
                      6: # Copyright Michigan State University Board of Trustees
                      7: #
                      8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
                      9: #
                     10: # LON-CAPA is free software; you can redistribute it and/or modify
                     11: # it under the terms of the GNU General Public License as published by
                     12: # the Free Software Foundation; either version 2 of the License, or
                     13: # (at your option) any later version.
                     14: #
                     15: # LON-CAPA is distributed in the hope that it will be useful,
                     16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
                     17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     18: # GNU General Public License for more details.
                     19: #
                     20: # You should have received a copy of the GNU General Public License
                     21: # along with LON-CAPA; if not, write to the Free Software
                     22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
                     23: #
                     24: # /home/httpd/html/adm/gpl.txt
                     25: #
                     26: # http://www.lon-capa.org/
                     27: #
                     28: 
                     29: =pod
1.3       foxr       30: 
                     31: =head1 Synopsis
                     32: 
1.2       foxr       33:   LondTransaction objectifies the state of a transaction between lonc and
1.1       foxr       34:   lond (loncnew really).  
                     35: 
                     36: =cut
                     37: 
1.3       foxr       38: package LondTransaction;
1.2       foxr       39: 
                     40: =pod
                     41: =head1 Description
                     42: 
                     43: LondTransaction objects hold the state required to manage a 
                     44: transaction between lonc and lond, from the loncnew point of view.
                     45: The state consists of the following member data:
                     46: 
                     47: =item request
                     48: 
                     49: The text of the request to send to lond.
                     50: 
                     51: =item active
                     52: 
                     53: If zero, the request is not active and the londSocket item is not
                     54: defined.
                     55: 
                     56: =item londSocket
                     57: 
1.3       foxr       58: If the request is active,
1.2       foxr       59: this member contains the LondConnection object reference that
                     60: this request is being processed on.
                     61: 
                     62: =item deferred
                     63: 
                     64: True if the request is a deferred (delayed) request.
                     65: The member data below are either present or not depending on 
                     66: whether or not deferred is true.
                     67: 
                     68: =item clientSocket
                     69:    
                     70: If deferred is false, this member data is defined and is the 
                     71: handle to the socket that is connected to the apache child that
                     72: has requested this transaction.
                     73: 
                     74: =item DeferredFile
                     75: 
                     76: If deferred is false, this member data is defined and is the name
                     77: of the file that contains the deferred request.  When the transaction
                     78: is retired, this file will be deleted.
                     79: 
                     80: =head1 Member Functions
                     81: 
                     82: =head2  Operational functions
                     83: 
1.3       foxr       84: =cut
                     85: 
                     86: =pod
                     87: 
1.2       foxr       88: =item new
                     89: 
                     90: Creates a new transaction object.
                     91: 
1.3       foxr       92: =cut
                     93: 
                     94: sub new {
                     95:     my $class       = shift;
                     96:     my $Transaction = shift;
                     97: 
                     98:     
                     99:     my $self   = {request     => $Transaction,
                    100: 		  active      => 0,
                    101: 		  deferred    => 0};
                    102:     bless($self, $class);
                    103: }
                    104: =pod
                    105: 
1.2       foxr      106: =item Activate
                    107: 
                    108: Activates the transaction by assigning it to a LondConnection object
                    109: 
1.3       foxr      110: Parameters:
                    111: 
                    112: =over 3
                    113: 
                    114: =item  Connection
                    115: 
                    116: 
                    117: Reference to the LondConnection object along which the transaction
                    118: will be carried.
                    119: 
                    120: =back 
                    121: 
                    122: =cut
                    123: sub Activate {
                    124:     my $self       = shift;
                    125:     my $Connection = shift;	# Reference to a lond connection.
                    126: 
                    127:     $self->{londSocket} = $Connection; # Store the connection object and
                    128:     $self->{active}     = 1;	       # Indicate it's active.
                    129: 
                    130: }
                    131: 
                    132: =pod
                    133: 
1.2       foxr      134: =item Retire
                    135: 
1.3       foxr      136: 
                    137: Retires a transaction after successful completion.  If the
                    138: transaction is deferred, the deferred file is destroyed.
                    139: Otherwise this is a noop.
                    140: 
                    141: =cut
                    142: sub Retire {
                    143:     my $self     = shift;
                    144: 
                    145:     if($self->{deferred}) {
                    146: 	unlink $self->{DeferredFile};
                    147:     }
                    148: 
                    149:     #  Destroy my member data to release reference counts.
                    150: 
                    151:     delete $self->{londSocket};
                    152:     delete $self->{clientSocket};
                    153:     delete $self->{DeferredFile};
                    154: 
                    155: }
                    156: 
                    157: =pod
1.2       foxr      158: 
                    159: =item SetDeferred
                    160: 
                    161: Sets the state of a transaction to deferred, the deferred member
                    162: is set true, clientSocket is undefined, and DeferredFile is set.
                    163: 
1.3       foxr      164: Parameters:
                    165:  
                    166: =over 3
                    167: 
                    168: =item File
                    169: 
                    170: Name of the file that holds the deferred transaction.
                    171: 
                    172: =back 
                    173: 
                    174: =cut
                    175: sub SetDeferred {
                    176:     my $self   = shift;
                    177:     my $File   = shift;
                    178: 
                    179:     $self->{deferred}      = 1;
                    180:     $self->{DeferrredFile} = $File;
                    181: }
                    182: 
                    183: =pod
                    184: 
                    185: =item  SetClient
1.2       foxr      186: 
                    187: Sets the state of a transaction to not deferred.  The deferred member
                    188: is set false, clientSocket is set and DeferredFile is undefined.
                    189: 
1.3       foxr      190: Parameters:
                    191: 
                    192: =over 3
                    193: 
                    194: =item Socket
                    195: 
                    196:   The socket open on the client.
                    197: 
                    198: =back
                    199: 
                    200: =cut
                    201: sub SetClient {
                    202:     my $self   = shift;
                    203:     my $Client = shift;
                    204:     
                    205:     $self->{deferred}     = 0;
                    206:     $self->{clientSocket} = $Client; 
                    207: }
                    208: 
                    209: =pod
                    210: 
1.2       foxr      211: =head2  Selectors
                    212: 
                    213: 
                    214: =item isDeferred
                    215: 
                    216: Returns the state of the deferred member.
                    217: 
1.3       foxr      218: =cut
                    219: sub isDeferred {
                    220:     my $self   = shift;
                    221:     return $self->{deferred};
                    222: }
                    223: 
                    224: =pod
                    225: 
1.2       foxr      226: =item isActive
                    227: 
1.3       foxr      228: Returns the value of the active member.
                    229: 
                    230: =cut
                    231: sub isActive {
                    232:     my $self = shift;
                    233:     return $self->{active};
                    234: }
                    235: 
                    236: =pod
1.2       foxr      237: 
                    238: =item getClient
                    239: 
1.3       foxr      240: If not deferred returns the client socket, else returns undef.
                    241: 
                    242: =cut
                    243: sub getClient {
                    244:     my $self = shift;
                    245:     if($self->{deferred}) {
                    246: 	return undef;
                    247:     } else {
                    248: 	return $self->{clientSocket};
                    249:     }
                    250: }
                    251: 
                    252: 
                    253: =pod
1.2       foxr      254: 
                    255: =item getFile
                    256: 
                    257: If deferred, returns the name of the deferred queue file else
                    258: returns undef.
                    259: 
                    260: =cut
1.3       foxr      261: sub getFile {
                    262:     my $self = shift;
                    263:     if($self->{deferred}) {
                    264: 	return $self->{DeferredFile};
                    265:     } else {
                    266: 	return undef;
                    267:     }
                    268: }
                    269: 
                    270: 
                    271: =pod
                    272: 
                    273: =item getServer
                    274: 
                    275:   If active returns the lond server socket else undef.
                    276: 
                    277: =cut
                    278: sub getServer {
                    279:     my $self  = shift;
                    280: 
                    281:     if($self->{active}) {
                    282: 	return $self->{londSocket};
                    283:     } else {
                    284: 	return undef;
                    285:     }
                    286: }
                    287: 
                    288: =pod
                    289: 
                    290: =item getRequest
                    291: 
                    292:   Returns the remaining request text.
                    293: 
                    294: =cut
                    295: sub getRequest {
                    296:     my $self = shift;
                    297:     return $self->{request};
                    298: }
                    299: 
                    300: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>