/* * @(#)SessionAddress.java 1.12 02/08/21 * * Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved. */ package javax.media.rtp; import java.net.InetAddress; /** * Class to encapsulate a pair of internet address and a pair of ports * for use in RTPSM methods. * <P> */ public class SessionAddress implements java.io.Serializable { private InetAddress m_dataAddress; private InetAddress m_controlAddress; private int m_dataPort; private int m_controlPort; private int ttl; // time to live, used in multicast sessions public static final int ANY_PORT = -1; /** * Constructor to create an SessionAddress given the data internet * address and data port. <P> * * @param dataAddress The data address. <P> * * @param dataPort The data port. If this value is passed as the * constant ANY_PORT, the object * will not represent a specific data port. <P> */ public SessionAddress( InetAddress dataAddress, int dataPort) { m_dataAddress = dataAddress; m_controlAddress = dataAddress; m_dataPort = dataPort; m_controlPort = dataPort + 1; } /** * Constructor to create an SessionAddress given the data internet * address and data port. <P> * * @param dataAddress The data address. <P> * * @param dataPort The data port. If this value is passed as the * constant ANY_PORT, the object * will not represent a specific data port. <P> * * @param timeToLive The time-to-live parameter for multicast sessions <P> */ public SessionAddress( InetAddress dataAddress, int dataPort, int timeToLive) { m_dataAddress = dataAddress; m_controlAddress = dataAddress; m_dataPort = dataPort; m_controlPort = dataPort + 1; ttl= timeToLive; } /** * Constructor to create an SessionAddress given both internet * address and ports. <P> * * @param dataAddress The data address. <P> * * @param dataPort The data port. If this value is passed as the * constant ANY_PORT, the object * will not represent a specific data port. <P> * * @param controlAddress The control address. <P> * * @param controlPort The control port. If this value is passed as * the constant ANY_PORT, the * object will not represent a specific control port. <P> * */ public SessionAddress( InetAddress dataAddress, int dataPort, InetAddress controlAddress, int controlPort) { m_dataAddress = dataAddress; m_controlAddress = controlAddress; m_dataPort = dataPort; m_controlPort = controlPort; } /** * Constructor to create an "empty" RTPSesionAddress. Equivalent * to calling SessionAddress(null, ANY_PORT, null, ANY_PORT). <P> */ public SessionAddress(){ this(null, ANY_PORT, null, ANY_PORT); } /** * Returns the time-to-live value for mutlicast sessions. * */ public int getTimeToLive() { return ttl; } /** * Access method to get the data address of this SessionAddress. <P> */ public InetAddress getDataAddress(){ return m_dataAddress; } /** * Access method to set the data address of this SessionAddress. <P> */ public void setDataHostAddress( InetAddress dataAddress) { m_dataAddress= dataAddress; } /** * Access method to set the data port of this SessionAddress. <P> */ public void setDataPort( int dataPort) { m_dataPort= dataPort; } /** * Returns the IP address string of the data address host. * */ public String getDataHostAddress() { return m_dataAddress.getHostAddress(); } /** * Access method to get the data port of this SessionAddress. <P> */ public int getDataPort(){ return m_dataPort; } /** * Access method to get the control address of this SessionAddress. <P> */ public InetAddress getControlAddress(){ return m_controlAddress; } /** * Access method to set the control address of this SessionAddress. <P> */ public void setControlHostAddress( InetAddress controlAddress) { m_controlAddress= controlAddress; } /** * Access method to set the control port of this SessionAddress. <P> */ public void setControlPort( int controlPort) { m_controlPort= controlPort; } /** * Returns the IP address string of the control address host. * */ public String getControlHostAddress() { return m_controlAddress.getHostAddress(); } /** * Access method to get the control port of this SessionAddress. <P> */ public int getControlPort(){ return m_controlPort; } public boolean equals(Object obj){ if (obj instanceof SessionAddress){ SessionAddress otheraddr = (SessionAddress)obj; InetAddress otherdest = otheraddr.getDataAddress(); InetAddress othercontl = otheraddr.getControlAddress(); int dport = otheraddr.getDataPort(); int cport = otheraddr.getControlPort(); if ( (otherdest.equals(m_dataAddress)) && (othercontl.equals(m_controlAddress)) && (dport == m_dataPort) && (cport == m_controlPort)) return true; } return false; } public int hashCode(){ return 1; } public String toString() { String s= "DataAddress: "; if( m_dataAddress != null) s+= m_dataAddress.toString(); else s+= "null"; s+= "\nControlAddress: "; if( m_controlAddress != null) s+= m_controlAddress.toString(); else s+= "null"; s+= ("\nDataPort: " + m_dataPort + "\nControlPort: " + m_controlPort); return s; } }