FileDocCategorySizeDatePackage
ThreadedSolver.javaAPI DocExample3153Sun Jan 04 23:11:00 GMT 1998dcj.examples

ThreadedSolver

public class ThreadedSolver extends Object implements dcj.examples.Solver, Runnable

Fields Summary
protected dcj.examples.ProblemSet
currProblem
protected OutputStream
clientOut
protected InputStream
clientIn
Constructors Summary
public ThreadedSolver(InputStream cin, OutputStream cout)

   // Source of problems
  
  // Constructors
      
  
    super();
    clientIn = cin;
    clientOut = cout;
  
Methods Summary
public booleanIterations(int dummy)

 return false; 
public voidPrintResults(java.io.OutputStream os)

    PrintStream pos = new PrintStream(os);
    pos.println("Problem solution: " + currProblem.getSolution());
  
public booleanProblem(dcj.examples.ProblemSet s)

 currProblem = s; return true; 
public booleanSolve()

    boolean success = true;
    SimpleCmdInputStream sin = new SimpleCmdInputStream(clientIn);
    String inStr = null;
    try
      {
        System.out.println("Reading from client...");
        inStr = sin.readString();
      }
    catch (IOException e)
      {
        System.out.println("Error reading data from client.");
        return false;
      }
    
    if (inStr.compareTo("problem") == 0)
      {
        try
          {
            inStr = sin.readString();
          }
        catch (IOException e)
          {
            System.out.println("Error reading data from client.");
            return false;
          }
            
        System.out.println("Got \"" + inStr + "\" from client.");
        double problem = Double.valueOf(inStr).doubleValue();
        ProblemSet p = new ProblemSet();
        p.setValue(problem);
        success = Solve(p);
      }
    else
      {
        System.out.println("Error reading problem from client.");
        return false;
      }
    
    return success;
  
public booleanSolve(dcj.examples.ProblemSet s)

    boolean success = true;
    
    if (s == null)
      {
        System.out.println("No problem to solve.");
        return false;
      }
    
    System.out.println("Problem value = " + s.getValue());
    
    // Solve problem here...
    try
      {
        s.setSolution(Math.sqrt(s.getValue()));
      }
    catch (ArithmeticException e)
      {
        System.out.println("Badly-formed problem.");
        success = false;
      }
    
    System.out.println("Problem solution = " + s.getSolution());
    System.out.println("Sending solution to output...");
    
    // Write the solution to the designated output destination
    try
      {
        DataOutputStream dout = new DataOutputStream(clientOut);
        dout.writeChars("solution=" + s.getSolution() + "\n");
      }
    catch (IOException e)
      {
        System.out.println("Error writing results to output.");
        success = false;
      }
    
    return success;
  
public voidrun()

    System.out.println("ThreadedSolver::run()...");
    Solve();