package net;

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

public class AutoClient implements
    Runnable {
  public String autoServerName = "192.168.1.96";

  //public String autoServerName = "localhost";
  public void run() {
    try {
      Socket s
          = new Socket(autoServerName,
                       AutoServer.PORT);
      ObjectInputStream
          ois =
          new ObjectInputStream(
              s.getInputStream());
      ObjectOutputStream
          oos =
          new ObjectOutputStream(
              s.getOutputStream());
      BigComputation co = new BigComputation();
      RemoteClassLoader rcl = new
          RemoteClassLoader(co);
      oos.writeObject(rcl);
      oos.writeObject(co);
      Object o = ois.readObject();
      System.out.println(o);
      ois.close();
      oos.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public static void main(String args[]) {
    // uncomment for a local invocation
    // AutoServer.main(args);
    AutoClient ac = new AutoClient();
    ac.run();
  }
}

class BigComputation implements ComputableObject {
  public Object compute() {
    return "I finished the BigComputation";
  }
}