package org.lucci.madhoc.messaging;

import org.lucci.madhoc.network.Application;
import org.lucci.util.assertion.Assertions;

/*
 * Created on May 17, 2005
 */

/**
 * @author luc.hogie
 */
public class MessageInformation extends TransferableObject
{
    private Application source;

    private double creationDate = -1;

    private double validity = Double.MAX_VALUE;

    
    /*
     * (non-Javadoc)
     * 
     * @see org.lucci.madhoc.messaging.TranferableObject#getSizeInBytes()
     */
    public int getSizeInBytes()
    {
        return 4;
    }

    public Application getSource()
    {
        return source;
    }

    public void setSource(Application application)
    {
        Assertions.ensure(application != null, "source is not defined");
        this.source = application;
    }

    public Object clone()
    {
        MessageInformation clone = (MessageInformation) super.clone();
        clone.source = this.source;
        clone.creationDate = creationDate;
        return clone;
    }

    public double getCreationDate()
    {
        return creationDate;
    }

    public void setCreationDate(double creationDate)
    {
        this.creationDate = creationDate;
    }

    public double getValidity()
    {
        return validity;
    }

    public void setValidity(double validity)
    {
        Assertions.ensure(validity > 0, "message validity must be >= 0");
        this.validity = validity;
    }
}