summaryrefslogblamecommitdiffstats
path: root/gearman/controllerWorker/ControllerWorker/PoolctrlRequest.java
blob: 086b88bfad99dfc731bdf04edb0442f8209cfae8 (plain) (tree)
1
2
3
4
5
6
7
8
9




                                  



                               



                                                                                     

                                        
                                                                                    
                     

                                                            
                                       
                                                   
                 
                                                 



















                                                                                
                                                           









                                                    












                                                                                    











                                                                                
                                                   


                 
package ControllerWorker;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.log4j.Logger;

public class PoolctrlRequest extends Thread {
	private static final Logger logger = Logger.getLogger(PoolctrlRequest.class);
	private URL runURL;
	private URL reportURL;
	private final long updatePeriod;

	public PoolctrlRequest(String runURL, String reportURL, long updatePeriod) {
		try {
			this.runURL = new URL(runURL);
			this.reportURL = new URL(reportURL);
		} catch (Exception e) {
			logger.error(e.toString());
		}
		this.updatePeriod = updatePeriod;
	}

	public void run() {
		workerLoop();
	}

	public void workerLoop() {
		long beginTime;
		long timeTaken;
		long timeLeft;
		while (true) {
			try {
				beginTime = System.nanoTime();
				update();
				timeTaken = System.nanoTime() - beginTime;
				timeLeft = (updatePeriod - timeTaken) / 1000000;
				if (timeLeft < 10)
					timeLeft = 10;
				Thread.sleep(timeLeft);
			} catch (Exception e) {
				logger.error(e.toString());
			}
		}
	}

	public void update() {
		HttpURLConnection connection = null;
		BufferedReader rd = null;
		StringBuilder sb = null;
		String line = null;
		try {
			connection = (HttpURLConnection) runURL.openConnection();
			connection.setRequestMethod("GET");
			connection.setDoOutput(true);
			connection.connect();
			rd = new BufferedReader(new InputStreamReader(connection
					.getInputStream()));
			sb = new StringBuilder();

			while ((line = rd.readLine()) != null) {
				sb.append(line + '\n');
			}
			logger.info(sb.toString());
			connection = (HttpURLConnection) reportURL.openConnection();
			connection.setRequestMethod("GET");
			connection.setDoOutput(true);
			connection.connect();
			rd = new BufferedReader(new InputStreamReader(connection
					.getInputStream()));
			sb = new StringBuilder();

			while ((line = rd.readLine()) != null) {
				sb.append(line + '\n');
			}
			logger.info(sb.toString());
		} catch (Exception e) {
			logger.error(e.toString());
		}
	}
}