--- loncom/LondTransaction.pm 2003/05/05 23:58:05 1.2 +++ loncom/LondTransaction.pm 2004/06/01 10:06:52 1.7 @@ -1,7 +1,7 @@ # This module defines and implements a class that represents # a connection to a lond daemon. # -# $Id: LondTransaction.pm,v 1.2 2003/05/05 23:58:05 foxr Exp $ +# $Id: LondTransaction.pm,v 1.7 2004/06/01 10:06:52 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -27,12 +27,17 @@ # =pod -=HEAD1 Synopsis + +=head1 Synopsis + LondTransaction objectifies the state of a transaction between lonc and lond (loncnew really). =cut +use strict; + +package LondTransaction; =pod =head1 Description @@ -52,7 +57,7 @@ defined. =item londSocket -If the request is not a deferred one (deferred = false), +If the request is active, this member contains the LondConnection object reference that this request is being processed on. @@ -78,28 +83,139 @@ is retired, this file will be deleted. =head2 Operational functions +=cut + +=pod + =item new Creates a new transaction object. +=cut + + + +sub new { + + my ($class, $Transaction) = @_; + + + my $self = {request => $Transaction, + active => 0, + deferred => 0}; + bless($self, $class); + return $self; +} +=pod + =item Activate Activates the transaction by assigning it to a LondConnection object +Parameters: + +=over 3 + +=item Connection + + +Reference to the LondConnection object along which the transaction +will be carried. + +=back + +=cut +sub Activate { + + + my ($self, $Connection) = @_; + + + $self->{londSocket} = $Connection; # Store the connection object and + $self->{active} = 1; # Indicate it's active. + +} + +=pod + =item Retire -Retires a transaction after successful completion. + +Retires a transaction after successful completion. If the +transaction is deferred, the deferred file is destroyed. +Otherwise this is a noop. + +=cut +sub Retire { + my $self = shift; + + if($self->{deferred}) { + unlink $self->{DeferredFile}; + } + + # Destroy my member data to release reference counts. + + delete $self->{londSocket}; + delete $self->{clientSocket}; + delete $self->{DeferredFile}; + +} + +=pod =item SetDeferred Sets the state of a transaction to deferred, the deferred member is set true, clientSocket is undefined, and DeferredFile is set. -=item SetClient +Parameters: + +=over 3 + +=item File + +Name of the file that holds the deferred transaction. + +=back + +=cut +sub SetDeferred { + + + my ($self, $File) = @_; + + $self->{deferred} = 1; + $self->{DeferredFile} = $File; +} + +=pod + +=item SetClient Sets the state of a transaction to not deferred. The deferred member is set false, clientSocket is set and DeferredFile is undefined. +Parameters: + +=over 3 + +=item Socket + + The socket open on the client. + +=back + +=cut +sub SetClient { + + my ($self, $Client) = @_; + + $self->{deferred} = 0; + $self->{clientSocket} = $Client; +} + +=pod + =head2 Selectors @@ -107,13 +223,42 @@ is set false, clientSocket is set and De Returns the state of the deferred member. +=cut +sub isDeferred { + my $self = shift; + return $self->{deferred}; +} + +=pod + =item isActive -Returns the staate of the active member. +Returns the value of the active member. + +=cut +sub isActive { + my $self = shift; + return $self->{active}; +} + +=pod =item getClient -if not deferred returns the client socket, else returns undef. +If not deferred returns the client socket, else returns undef. + +=cut +sub getClient { + my $self = shift; + if($self->{deferred}) { + return undef; + } else { + return $self->{clientSocket}; + } +} + + +=pod =item getFile @@ -121,3 +266,44 @@ If deferred, returns the name of the def returns undef. =cut +sub getFile { + my $self = shift; + if($self->{deferred}) { + return $self->{DeferredFile}; + } else { + return undef; + } +} + + +=pod + +=item getServer + + If active returns the lond server socket else undef. + +=cut +sub getServer { + my $self = shift; + + if($self->{active}) { + return $self->{londSocket}; + } else { + return undef; + } +} + +=pod + +=item getRequest + + Returns the remaining request text. + +=cut +sub getRequest { + my $self = shift; + return $self->{request}; +} + + +1;