// Path: oncue-common/src/main/java/oncue/common/messages/JVMCapacityWorkRequest.java
// public class JVMCapacityWorkRequest extends AbstractWorkRequest {
// 
// 	private static final long serialVersionUID = -4503173564405936817L;
// 
// 	private long freeMemory;
// 	private long maxMemory;
// 	private long totalMemory;
// 
// 	public JVMCapacityWorkRequest(ActorRef agent, Set<String> workerTypes, long freeMemory, long totalMemory,
// 			long maxMemory) {
// 		super(agent, workerTypes);
// 		this.setFreeMemory(freeMemory);
// 		this.totalMemory = totalMemory;
// 		this.maxMemory = maxMemory;
// 	}
// 
// 	public long getFreeMemory() {
// 		return freeMemory;
// 	}
// 
// 	public long getMaxMemory() {
// 		return maxMemory;
// 	}
// 
// 	public long getTotalMemory() {
// 		return totalMemory;
// 	}
// 
// 	public void setFreeMemory(long freeMemory) {
// 		this.freeMemory = freeMemory;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return super.toString()
// 				+ String.format(" [freeMem = %s, totalMem = %s, maxMem = %s]", getFreeMemory(), totalMemory, maxMemory);
// 	}
// }


import java.util.Set;
import oncue.common.messages.JVMCapacityWorkRequest;
/*******************************************************************************
 * Copyright 2013 Michael Marconi
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package oncue.agent;



/**
 * This agent will report a snapshot of the JVM memory capacity of this node
 * when requesting work.
 */
public class JVMCapacityAgent extends AbstractAgent {

	// Only used for testing
	private long testCapacity;

	public JVMCapacityAgent(Set<String> workerTypes) {
		super(workerTypes);
	}

	/**
	 * This constructor should only be used for testing!
	 * 
	 * @param testCapacity
	 *            overrides the maximum number of jobs to deal with concurrently
	 */
	public JVMCapacityAgent(Set<String> workerTypes, long testCapacity) {
		super(workerTypes);
		this.testCapacity = testCapacity;
	}

	@Override
	protected void requestWork() {
		if (testProbe != null) {
			getScheduler().tell(
// Path: oncue-common/src/main/java/oncue/common/messages/JVMCapacityWorkRequest.java
// public class JVMCapacityWorkRequest extends AbstractWorkRequest {
// 
// 	private static final long serialVersionUID = -4503173564405936817L;
// 
// 	private long freeMemory;
// 	private long maxMemory;
// 	private long totalMemory;
// 
// 	public JVMCapacityWorkRequest(ActorRef agent, Set<String> workerTypes, long freeMemory, long totalMemory,
// 			long maxMemory) {
// 		super(agent, workerTypes);
// 		this.setFreeMemory(freeMemory);
// 		this.totalMemory = totalMemory;
// 		this.maxMemory = maxMemory;
// 	}
// 
// 	public long getFreeMemory() {
// 		return freeMemory;
// 	}
// 
// 	public long getMaxMemory() {
// 		return maxMemory;
// 	}
// 
// 	public long getTotalMemory() {
// 		return totalMemory;
// 	}
// 
// 	public void setFreeMemory(long freeMemory) {
// 		this.freeMemory = freeMemory;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return super.toString()
// 				+ String.format(" [freeMem = %s, totalMem = %s, maxMem = %s]", getFreeMemory(), totalMemory, maxMemory);
// 	}
// }


// Path: oncue-agent/src/main/java/oncue/agent/JVMCapacityAgent.java
import java.util.Set;
import oncue.common.messages.JVMCapacityWorkRequest;

/*******************************************************************************
 * Copyright 2013 Michael Marconi
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package oncue.agent;



/**
 * This agent will report a snapshot of the JVM memory capacity of this node
 * when requesting work.
 */
public class JVMCapacityAgent extends AbstractAgent {

	// Only used for testing
	private long testCapacity;

	public JVMCapacityAgent(Set<String> workerTypes) {
		super(workerTypes);
	}

	/**
	 * This constructor should only be used for testing!
	 * 
	 * @param testCapacity
	 *            overrides the maximum number of jobs to deal with concurrently
	 */
	public JVMCapacityAgent(Set<String> workerTypes, long testCapacity) {
		super(workerTypes);
		this.testCapacity = testCapacity;
	}

	@Override
	protected void requestWork() {
		if (testProbe != null) {
			getScheduler().tell(
					new JVMCapacityWorkRequest(getSelf(), getWorkerTypes(), testCapacity, testCapacity, testCapacity),