package geneticAlgorithm;

import popcorn.*;

/**
 * Computation packet for one population improvment via number of generations
 * on a remote machine.
 */
public class OnePopPacket extends ComputationPacket{
  private Pop pop;
  private int generations;

  /**
   * Constructor.
   */
  public OnePopPacket(Pop pop, int generations){
    super(new OnePopComputelet(pop, generations));
    //    System.err.println("in OnePopPacket constructor");
    this.pop = pop;
    this.generations = generations;
  }
  
  /**
   * Constructor.
   */
  public OnePopPacket(Pop pop, int generations, 
		      CompoundComputation parent){
    
    super(new OnePopComputelet(pop, generations), parent);
    //    System.err.println("in OnePopPacket constructor (with parent)");
    this.pop = pop;
    this.generations = generations;
  }
  
  /**
   * Reports result when calculations finished.
   */
  public void completed(){
    //    System.err.println("in OnePopPacket completed");
    reportResult((Pop) getResult());
    done();
  }
  
  /**
   * Starts again if failed.
   */
  public void failed(){
    //    System.err.println("in OnePopPacket failed");
    go();
  }
  
  public void reportResult(Pop children){
    //    System.err.println("in OnePopPacket reportResult");
  }
}

