package net;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

public class ComputeThread extends
    Thread {
  ObjectInputStream ois;
  ObjectOutputStream oos;

  ComputeThread(Socket s)
      throws IOException {
    oos =
        new ObjectOutputStream(
            s.getOutputStream());

    ois =
        new ObjectInputStream(
            s.getInputStream());
  }

  public void run() {
    try {
      Object o = ois.readObject();
      if (!(o instanceof ComputableObject)) {
        System.out.println("Bad object!");
        return;
      }
      ComputableObject
          co = (ComputableObject) o;
      Object ans = co.compute();
      oos.writeObject(ans);
      oos.close();
      ois.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}