package org.lucci.madhoc.network.cpu;

import java.util.Random;

import org.lucci.madhoc.network.ComputerType;
import org.lucci.madhoc.network.ComputerUnit;

/*
 * Created on Oct 20, 2004
 */

/**
 * @author luc.hogie
 */
public class ComputationalUnit extends ComputerUnit
{
    private double frequency = 0.5;
    private double ramSize = 0.5;

    public double getFrequency()
    {
        return frequency;
    }
    
    public void setFrequency(double frequency)
    {
        if (0 <= frequency && frequency <= 1)
        {
            this.frequency = frequency;
        }
        else
        {
            throw new IllegalArgumentException();
        }
    }
    public double getRamSize()
    {
        return ramSize;
    }
    public void setRamSize(double ramSize)
    {
        if (0 <= ramSize && ramSize <= 1)
        {
            this.ramSize = ramSize;
        }
        else
        {
            throw new IllegalArgumentException();
        }
    }
    
    public double getOverallPerformance()
    {
        return 2 * getRamSize() * getFrequency();
    }
    

    /* (non-Javadoc)
     * @see org.lucci.madhoc.config.Configurable#configure()
     */
    public void configure() throws Throwable
    {
        Random random = getStation().getNetwork().getSimulation().getRandomNumberGenerator().getRandom();
        setFrequency(random.nextDouble());
        setRamSize(random.nextDouble());
        
    }
}