edu.nps.moves.dismobile.AggregateID Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of open-dis Show documentation
Show all versions of open-dis Show documentation
An open source implementation of the Distributed Interactive Simulation (DIS) IEEE-1278 protocol
package edu.nps.moves.dismobile;
import java.util.*;
import java.io.*;
import edu.nps.moves.disenum.*;
import edu.nps.moves.disutil.*;
/**
* Section 5.2.36. Each agregate in a given simulation app is given an aggregate identifier number unique for all other aggregates in that app and in that exercise. The id is valid for the duration of the the exercise.
*
* Copyright (c) 2008-2010, MOVES Institute, Naval Postgraduate School. All rights reserved.
* This work is licensed under the BSD open source license, available at https://www.movesinstitute.org/licenses/bsd.html
*
* @author DMcG
*/
public class AggregateID extends Object implements Serializable
{
/** The site ID */
protected int site;
/** The application ID */
protected int application;
/** the aggregate ID */
protected int aggregateID;
/** Constructor */
public AggregateID()
{
}
public int getMarshalledSize()
{
int marshalSize = 0;
marshalSize = marshalSize + 2; // site
marshalSize = marshalSize + 2; // application
marshalSize = marshalSize + 2; // aggregateID
return marshalSize;
}
public void setSite(int pSite)
{ site = pSite;
}
public int getSite()
{ return site;
}
public void setApplication(int pApplication)
{ application = pApplication;
}
public int getApplication()
{ return application;
}
public void setAggregateID(int pAggregateID)
{ aggregateID = pAggregateID;
}
public int getAggregateID()
{ return aggregateID;
}
public void marshal(DataOutputStream dos)
{
try
{
dos.writeShort( (short)site);
dos.writeShort( (short)application);
dos.writeShort( (short)aggregateID);
} // end try
catch(Exception e)
{
System.out.println(e);}
} // end of marshal method
public void unmarshal(DataInputStream dis)
{
try
{
site = (int)dis.readUnsignedShort();
application = (int)dis.readUnsignedShort();
aggregateID = (int)dis.readUnsignedShort();
} // end try
catch(Exception e)
{
System.out.println(e);
}
} // end of unmarshal method
/**
* Packs a Pdu into the ByteBuffer.
* @throws java.nio.BufferOverflowException if buff is too small
* @throws java.nio.ReadOnlyBufferException if buff is read only
* @see java.nio.ByteBuffer
* @param buff The ByteBuffer at the position to begin writing
* @since ??
*/
public void marshal(java.nio.ByteBuffer buff)
{
buff.putShort( (short)site);
buff.putShort( (short)application);
buff.putShort( (short)aggregateID);
} // end of marshal method
/**
* Unpacks a Pdu from the underlying data.
* @throws java.nio.BufferUnderflowException if buff is too small
* @see java.nio.ByteBuffer
* @param buff The ByteBuffer at the position to begin reading
* @since ??
*/
public void unmarshal(java.nio.ByteBuffer buff)
{
site = (int)(buff.getShort() & 0xFFFF);
application = (int)(buff.getShort() & 0xFFFF);
aggregateID = (int)(buff.getShort() & 0xFFFF);
} // end of unmarshal method
/*
* The equals method doesn't always work--mostly it works only on classes that consist only of primitives. Be careful.
*/
@Override
public boolean equals(Object obj)
{
if(this == obj){
return true;
}
if(obj == null){
return false;
}
if(getClass() != obj.getClass())
return false;
return equalsImpl(obj);
}
/**
* Compare all fields that contribute to the state, ignoring
transient and static fields, for this
and the supplied object
* @param obj the object to compare to
* @return true if the objects are equal, false otherwise.
*/
public boolean equalsImpl(Object obj)
{
boolean ivarsEqual = true;
if(!(obj instanceof AggregateID))
return false;
final AggregateID rhs = (AggregateID)obj;
if( ! (site == rhs.site)) ivarsEqual = false;
if( ! (application == rhs.application)) ivarsEqual = false;
if( ! (aggregateID == rhs.aggregateID)) ivarsEqual = false;
return ivarsEqual;
}
} // end of class