import edu.cmu.paid.network.*;
import edu.cmu.paid.network.voyager.*;
import edu.cmu.paid.network.exception.*;
import java.util.Vector;
import java.lang.String;

/**
 * Temp file for testing Server and Client objects.
 *
 * Local object on client.
 *
 * @author Orly Canlas (edited from Will Ross's RunClient)
 */

public class TestBClient {

  public static void main(String[] args) {

    INetwork_Api napi = new CNetwork_Api();

    String server_url;
    DataObject myRequest;
    Vector response;
    int num_objects;

    //get server's url from cmd line (full namespace name)
    if(args.length == 1) {
      server_url = args[0];
      System.out.println("Server: " + server_url);
    } else {
      server_url = "//localhost:9000/SERVER";
      System.out.println("Syntax:  RunClient <server url>");
      System.out.println("Defaulting to //localhost:9000/SERVER");
    }

    String[] server_list = new String[2];
    server_list[0] = new String("false server name..");
    server_list[1] = server_url;

    try {

      //start voyager
      napi.clientStartup();

     //create the DataObject used to make a request.
      myRequest = new CarObject(  );
      myRequest.setValue("Price", "20000");

      //request data
      System.out.println("RunClient: requesting data..");
      response = napi.remoteQuery( myRequest, server_list );

      //play around to test stuff:
      num_objects = napi.getNumObjects();

      System.out.println("Request returned.");

      //spit it out
      if(response != null) {
        System.out.println("Retrieved " + response.size() + " objects.");
      } else {
        System.out.println("Data retrieved null.");
      }

      // Loop instead of at 20% & 70%
      for (int i = 1; i < 101; i++) {

	//wait for i%
	System.out.println("Download:" + i + "%");
	napi.waitForPct(i);

	if (i == 50) {
	  System.out.print("killing transfer..");
	  napi.killDownload();
	  System.out.println("it's dead.");
	  break;
	}

	/*
	//spit it out
	if(response != null) {
	  System.out.println("Retrieved " + response.size() + " objects.");
	} else {
	  System.out.println("Data retrieved null.");
	}
	*/

      }

      /*
      //kill transfer
      System.out.print("killing transfer..");
      napi.killDownload();
      System.out.println("it's dead.");

      //spit it out
      if(response != null) {
        System.out.println("Retrieved " + response.size() + " objects.");
      } else {
        System.out.println("Data retrieved null.");
      }
      */

      //close voyager to quit.
      napi.disconnectMachine();

    } catch ( Exception e ) {
      System.out.println("RunServer: Exception thrown: " + e.toString());
    }
  }
}

