/*
 * Copyright 2008-2010 Plura Processing, LP 
 */
package test;

import java.util.Calendar;

import com.pluraprocessing.node.affiliate.desktop.JavaPluraConnector;
import com.pluraprocessing.node.exception.PluraInitializationException;
import com.pluraprocessing.node.exception.PluraIntervalException;
import com.pluraprocessing.node.exception.PluraLoadException;
import com.pluraprocessing.node.exception.PluraParameterException;
import com.pluraprocessing.node.exception.PluraStateException;

public class TestDesktopInterface {

	/*
	 * This method tests JavaPluraConnector functionality for Java Applications and Java Signed Applets
	 */
	public static void main(String[] args) {
		JavaPluraConnector plura = null;
		
		try {
			//instantiate new JavaPluraConnector with affiliate id = 00000000-0000-0000-0000-000000000000, cpu percentage = .5, 
			//bandwidth percentage = .8, client id = "test", max plura threads = 4 (to use 4 cores on a computer)
			plura = new JavaPluraConnector("00000000-0000-0000-0000-000000000000", .5, .8, "test", 4); 
			
						
			System.out.println("change bandwidth usage to .6"); 
			plura.changeBandwidthUsage(.6); //change bandwidth usage to 60%	 
			
			System.out.println("start Plura"); 
			plura.start(); //start Plura at 60% bandwidth usage, 50% cpu usage, and 4 Plura threads max
			
			Thread.sleep(45000);
	
			System.out.println("stop Plura"); 
			plura.stop(); //stop Plura

			System.out.println("change max Plura threads to 8"); 
			plura.changeMaxPluraThreads(8); //change max Plura threads to 8 

			System.out.println("change cpu usage to .8"); 
			plura.changeCpuUsage(.8); //change cpu usage to 80%	 
			
			System.out.println("start Plura");
			plura.start(); //start Plura with 80% cpu usage, 60% bandwidth usage, and 8 Plura threads max
			
			Thread.sleep(45000);
			
			System.out.println("stop Plura"); 
			plura.stop(); //stop Plura
		} 
		catch (PluraInitializationException e) {
			e.printStackTrace(System.out);
		} 
		catch (InterruptedException e) {
			e.printStackTrace(System.out);
		} 
		catch (PluraLoadException e) {
			e.printStackTrace(System.out);
		} 
		catch (PluraParameterException e) {
			e.printStackTrace(System.out);
		} 
		catch (PluraIntervalException e) {
			e.printStackTrace(System.out);
		} 
		catch (PluraStateException e) {
			e.printStackTrace(System.out);
		}
		finally {
			if (plura != null) {
				plura.stop(); //Stop Plura before the application exits (even if it exits on error) so that Plura threads are not abandoned.
			}
		}
	}

}