Diff for /loncom/lonmaxima between versions 1.16 and 1.17

version 1.16, 2006/03/08 22:30:11 version 1.17, 2006/03/09 21:38:26
Line 44  use strict; Line 44  use strict;
   
 # global variables  # global variables
 my $PREFORK                = 5;        # number of children to maintain  my $PREFORK                = 5;        # number of children to maintain
 my $MAX_CLIENTS_PER_CHILD  = 5;        # number of clients each child should process  my $MAX_CLIENTS_PER_CHILD  = 50;       # number of clients each child should process
 my %children               = ();       # keys are current child process IDs  my %children               = ();       # keys are current child process IDs
 my $children               = 0;        # current number of children  my $children               = 0;        # current number of children
 my $status;                            # string for current status  my $status;                            # string for current status
Line 243  sub make_new_child { Line 243  sub make_new_child {
         sigprocmask(SIG_UNBLOCK, $sigset)          sigprocmask(SIG_UNBLOCK, $sigset)
             or die("Can't unblock SIGINT for fork: $!\n");              or die("Can't unblock SIGINT for fork: $!\n");
   
           &logthis('New process started');
   
         my $command=Expect->spawn('maxima');          my $command=Expect->spawn('maxima');
         $command->log_stdout(0);          $command->log_stdout(0);
   
Line 251  sub make_new_child { Line 253  sub make_new_child {
         for (my $i=0; $i < $MAX_CLIENTS_PER_CHILD; $i++) {          for (my $i=0; $i < $MAX_CLIENTS_PER_CHILD; $i++) {
            &status('Accepting connections');             &status('Accepting connections');
            my $client = $server->accept()     or last;             my $client = $server->accept()     or last;
              print $command "kill(all);reset();\n";
              &getmaximaoutput($command);
            while (my $cmd=<$client>) {             while (my $cmd=<$client>) {
               &status('Processing command');                &status('Processing command');
               print $command &unescape($cmd).";\n";                print $command &unescape($cmd);
               print $client &escape(&getmaximaoutput($command))."\n";                my $reply=&getmaximaoutput($command);
                 print $client &escape($reply)."\n";
                 if ($reply=~/^Error\:/) {
                    &logthis('Died through '.$reply);
                    $client->close();
                    $command->hard_close();     
                    exit;
                 }
                 &status('Waiting for commands');
            }             }
         }          }
   
Line 271  sub make_new_child { Line 283  sub make_new_child {
   
 sub getmaximaoutput {  sub getmaximaoutput {
     my ($command)=@_;      my ($command)=@_;
     my (undef,undef,undef,$output)=$command->expect(20, -re => '\(\%i\d+\)');      my (undef,$error,undef,$output)=$command->expect(20, -re => '\(\%i\d+\)');
       if ($error) {
          return 'Error: '.$error;
       }
     my $foundoutput=0;      my $foundoutput=0;
     my $realoutput='';      my $realoutput='';
     foreach my $line (split(/\n/,$output)) {      foreach my $line (split(/\n/,$output)) {

Removed from v.1.16  
changed lines
  Added in v.1.17


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