package games.strategy.net;
import java.io.Serializable;
// written over the network very often, so make externalizable to
// increase performance
public class MessageHeader {
// if null, then a broadcast
private final INode m_for;
private final Serializable m_message;
private final INode m_from;
/**
* Creates a broadcast message.
*/
public MessageHeader(final INode from, final Serializable message) {
this(null, from, message);
}
public MessageHeader(final INode to, final INode from, final Serializable message) {
// for can be null if we are a broadcast
m_for = to;
// from can be null if the sending node doesnt know its own address
m_from = from;
m_message = message;
}
/**
* null if a broadcast.
*/
public INode getFor() {
return m_for;
}
public INode getFrom() {
return m_from;
}
public boolean isBroadcast() {
return m_for == null;
}
public Serializable getMessage() {
return m_message;
}
@Override
public String toString() {
return "Message header. msg:" + m_message + " to:" + m_for + " from:" + m_from;
}
}