package games.strategy.engine.message; import games.strategy.net.INode; /** * Information useful on invocation of remote networked events. */ public class MessageContext { // the current caller of the remote or channel private static final ThreadLocal<INode> m_sender = new ThreadLocal<>(); // should only be called by EndPoint public static void setSenderNodeForThread(final INode node) { m_sender.set(node); } /** * Within the invocation on a remote method on an IRemote or an IChannelSubscriber, * this method will return the node that originated the message. * * <p> * Will return null if the current thread is not currenlty executing a remote method of an IRemote or * IChannelSubscrobor. * </p> * * <p> * This is set by the server, and cannot be overwritten by the client, and can be used to verify where messages come * from. * </p> * * @return the node that originated the message being received */ public static INode getSender() { return m_sender.get(); } }