All Downloads are FREE. Search and download functionalities are using the official Maven repository.

android.gov.nist.javax.sip.stack.HopImpl Maven / Gradle / Ivy

There is a newer version: 1.3.0-91
Show newest version
/*
* Conditions Of Use
*
* This software was developed by employees of the National Institute of
* Standards and Technology (NIST), an agency of the Federal Government.
* Pursuant to title 15 Untied States Code Section 105, works of NIST
* employees are not subject to copyright protection in the United States
* and are considered to be in the public domain.  As a result, a formal
* license is not needed to use the software.
*
* This software is provided by NIST as a service and is expressly
* provided "AS IS."  NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
* AND DATA ACCURACY.  NIST does not warrant or make any representations
* regarding the use of the software or the results thereof, including but
* not limited to the correctness, accuracy, reliability or usefulness of
* the software.
*
* Permission to use this software is contingent upon your acceptance
* of the terms of this agreement
*
* .
*
*/
/*******************************************************************************
 * Product of NIST/ITL Advanced Networking Technologies Division (ANTD).        *
 *******************************************************************************/
package android.gov.nist.javax.sip.stack;

import java.io.Serializable;
import java.util.StringTokenizer;
/*
 * IPv6 Support added by Emil Ivov ([email protected])
* Network Research Team (http://www-r2.u-strasbg.fr))
* Louis Pasteur University - Strasbourg - France
* Bug fix for correct handling of IPV6 Address added by * Daniel J. Martinez Manzano */ /** * Routing algorithms return a list of hops to which the request is * routed. * * @version 1.2 $Revision: 1.11 $ $Date: 2009-07-17 18:58:13 $ * * @author M. Ranganathan
* * * * */ public final class HopImpl extends Object implements android.javax.sip.address.Hop, Serializable { protected String host; protected int port; protected String transport; protected boolean defaultRoute; // This is generated from the proxy addr protected boolean uriRoute; // This is extracted from the requestURI. /** * Debugging println. */ public String toString() { return host + ":" + port + "/" + transport; } /** * Create new hop given host, port and transport. * @param hostName hostname * @param portNumber port * @param trans transport */ public HopImpl(String hostName, int portNumber, String trans) { host = hostName; // Added by Daniel J. Martinez Manzano // for correct management of IPv6 addresses. if(host.indexOf(":") >= 0) if(host.indexOf("[") < 0) host = "[" + host + "]"; port = portNumber; transport = trans; } /** * Creates new Hop * @param hop is a hop string in the form of host:port/Transport * @throws IllegalArgument exception if string is not properly formatted or null. */ HopImpl(String hop) throws IllegalArgumentException { if (hop == null) throw new IllegalArgumentException("Null arg!"); // System.out.println("hop = " + hop); int brack = hop.indexOf(']'); int colon = hop.indexOf(':',brack); int slash = hop.indexOf('/',colon); if (colon>0) { this.host = hop.substring(0,colon); String portstr; if (slash>0) { portstr = hop.substring(colon+1,slash); this.transport = hop.substring(slash+1); } else { portstr = hop.substring(colon+1); this.transport = "UDP"; } try { port = Integer.parseInt(portstr); } catch (NumberFormatException ex) { throw new IllegalArgumentException("Bad port spec"); } } else { if (slash>0) { this.host = hop.substring(0,slash); this.transport = hop.substring(slash+1); this.port = transport.equalsIgnoreCase("TLS") ? 5061 : 5060; } else { this.host = hop; this.transport = "UDP"; this.port = 5060; } } // Validate it if (host == null || host.length() == 0) throw new IllegalArgumentException("no host!"); // normalize this.host = this.host.trim(); this.transport = this.transport.trim(); if ((brack>0) && host.charAt(0)!='[') { throw new IllegalArgumentException("Bad IPv6 reference spec"); } /*if (transport.compareToIgnoreCase("UDP") != 0 && transport.compareToIgnoreCase("TLS") != 0 && transport.compareToIgnoreCase("TCP") != 0) { System.err.println("Bad transport string " + transport); throw new IllegalArgumentException(hop); }*/ } /** * Retruns the host string. * @return host String */ public String getHost() { return host; } /** * Returns the port. * @return port integer. */ public int getPort() { return port; } /** returns the transport string. */ public String getTransport() { return transport; } /** Return true if this is uriRoute */ public boolean isURIRoute() { return uriRoute; } /** Set the URIRoute flag. */ public void setURIRouteFlag() { uriRoute = true; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy