/spark/src/plugins/sip/src/java/net/java/sipmack/media/TransportCandidate.java
https://github.com/joechen2010/IM · Java · 519 lines · 270 code · 62 blank · 187 comment · 85 complexity · a3f32ca7c98c102563aeae56ecd42496 MD5 · raw file
- /**
- * $RCSfile: ,v $
- * $Revision: $
- * $Date: $
- *
- * Copyright (C) 2004-2011 Jive Software. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package net.java.sipmack.media;
- import java.net.SocketException;
- import java.net.UnknownHostException;
- import org.jivesoftware.smack.XMPPConnection;
- /**
- * Transport candidate.
- * <p/>
- * A candidate represents the possible transport for data interchange between
- * the two endpoints.
- *
- * @author Thiago Camargo
- */
- public abstract class TransportCandidate {
- private String name;
- private String ip; // IP address
- private int port; // Port to use, or 0 for any port
- private String localIp;
- private int generation;
- protected String password;
- private String sessionId;
- private XMPPConnection connection;
- private TransportCandidate symmetric;
- public void addCandidateEcho() throws SocketException, UnknownHostException {
- }
- public String getIp() {
- return ip;
- }
- /**
- * Set the IP address.
- *
- * @param ip the IP address
- */
- public void setIp(String ip) {
- this.ip = ip;
- }
- /**
- * Get local IP to bind to this candidate
- *
- * @return
- */
- public String getLocalIp() {
- return localIp == null ? ip : localIp;
- }
- /**
- * Set local IP to bind to this candidate
- *
- * @param localIp
- */
- public void setLocalIp(String localIp) {
- this.localIp = localIp;
- }
- /**
- * Get the symetric candidate for this candidate if it exists.
- *
- * @return
- */
- public TransportCandidate getSymmetric() {
- return symmetric;
- }
- /**
- * Set the symetric candidate for this candidate.
- *
- * @param symetric
- */
- public void setSymmetric(TransportCandidate symetric) {
- this.symmetric = symetric;
- }
- /**
- * Get the password used by ICE or relayed candidate
- *
- * @return a password
- */
- public String getPassword() {
- return password;
- }
- /**
- * Set the password used by ICE or relayed candidate
- *
- * @param password a password
- */
- public void setPassword(String password) {
- this.password = password;
- }
- /**
- * Get the XMPPConnection use to send or receive this candidate
- *
- * @return
- */
- public XMPPConnection getConnection() {
- return connection;
- }
- /**
- * Set the XMPPConnection use to send or receive this candidate
- *
- * @param connection
- */
- public void setConnection(XMPPConnection connection) {
- this.connection = connection;
- }
- /**
- * Get the jingle�s sessionId that is using this candidate
- *
- * @return
- */
- public String getSessionId() {
- return sessionId;
- }
- /**
- * Set the jingle�s sessionId that is using this candidate
- *
- * @param sessionId
- */
- public void setSessionId(String sessionId) {
- this.sessionId = sessionId;
- }
- /**
- * Empty constructor
- */
- public TransportCandidate() {
- this(null, 0, 0);
- }
- /**
- * Constructor with IP address and port
- *
- * @param ip The IP address.
- * @param port The port number.
- */
- public TransportCandidate(String ip, int port) {
- this(ip, port, 0);
- }
- /**
- * Constructor with IP address and port
- *
- * @param ip The IP address.
- * @param port The port number.
- * @param generation The generation
- */
- public TransportCandidate(String ip, int port, int generation) {
- this.ip = ip;
- this.port = port;
- this.generation = generation;
- }
- /**
- * Return true if the candidate is not valid.
- *
- * @return true if the candidate is null.
- */
- public boolean isNull() {
- if (ip == null) {
- return true;
- }
- else if (ip.length() == 0) {
- return true;
- }
- else if (port < 0) {
- return true;
- }
- else {
- return false;
- }
- }
- /**
- * Get the port, or 0 for any port.
- *
- * @return the port or 0
- */
- public int getPort() {
- return port;
- }
- /**
- * Set the port, using 0 for any port
- *
- * @param port the port
- */
- public void setPort(int port) {
- this.port = port;
- }
- /**
- * Get the generation for a transportElement definition
- *
- * @return the generation
- */
- public int getGeneration() {
- return generation;
- }
- /**
- * Set the generation for a transportElement definition.
- *
- * @param generation the generation number
- */
- public void setGeneration(int generation) {
- this.generation = generation;
- }
- /**
- * Get the name used for identifying this transportElement method (optional)
- *
- * @return a name used for identifying this transportElement (ie,
- * "myrtpvoice1")
- */
- public String getName() {
- return name;
- }
- /**
- * Set a name for identifying this transportElement.
- *
- * @param name the name used for the transportElement
- */
- public void setName(String name) {
- this.name = name;
- }
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final TransportCandidate other = (TransportCandidate) obj;
- if (generation != other.generation) {
- return false;
- }
- if (getIp() == null) {
- if (other.getIp() != null) {
- return false;
- }
- }
- else if (!getIp().equals(other.getIp())) {
- return false;
- }
- if (getName() == null) {
- if (other.getName() != null) {
- return false;
- }
- }
- else if (!getName().equals(other.getName())) {
- return false;
- }
- if (getPort() != other.getPort()) {
- return false;
- }
- return true;
- }
- /**
- * Fixed transport candidate
- */
- public static class Fixed extends TransportCandidate {
- public Fixed() {
- super();
- }
- /**
- * Constructor with IP address and port
- *
- * @param ip The IP address.
- * @param port The port number.
- */
- public Fixed(String ip, int port) {
- super(ip, port);
- }
- /**
- * Constructor with IP address and port
- *
- * @param ip The IP address.
- * @param port The port number.
- * @param generation The generation
- */
- public Fixed(String ip, int port, int generation) {
- super(ip, port, generation);
- }
- }
- /**
- * Type-safe enum for the transportElement protocol
- */
- public static class Protocol {
- public static final Protocol UDP = new Protocol("udp");
- public static final Protocol TCP = new Protocol("tcp");
- public static final Protocol TCPACT = new Protocol("tcp-act");
- public static final Protocol TCPPASS = new Protocol("tcp-pass");
- public static final Protocol SSLTCP = new Protocol("ssltcp");
- private String value;
- public Protocol(String value) {
- this.value = value;
- }
- public String toString() {
- return value;
- }
- /**
- * Returns the Protocol constant associated with the String value.
- */
- public static Protocol fromString(String value) {
- if (value == null) {
- return UDP;
- }
- value = value.toLowerCase();
- if (value.equals("udp")) {
- return UDP;
- }
- else if (value.equals("tcp")) {
- return TCP;
- }
- else if (value.equals("tcp-act")) {
- return TCPACT;
- }
- else if (value.equals("tcp-pass")) {
- return TCPPASS;
- }
- else if (value.equals("ssltcp")) {
- return SSLTCP;
- }
- else {
- return UDP;
- }
- }
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Protocol other = (Protocol) obj;
- if (value == null) {
- if (other.value != null) {
- return false;
- }
- }
- else if (!value.equals(other.value)) {
- return false;
- }
- return true;
- }
- /**
- * Return true if the protocol is not valid.
- *
- * @return true if the protocol is null
- */
- public boolean isNull() {
- if (value == null) {
- return true;
- }
- else if (value.length() == 0) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- /**
- * Type-safe enum for the transportElement channel
- */
- public static class Channel {
- public static final Channel MYRTPVOICE = new Channel("myrtpvoice");
- public static final Channel MYRTCPVOICE = new Channel("myrtcpvoice");
- private String value;
- public Channel(String value) {
- this.value = value;
- }
- public String toString() {
- return value;
- }
- /**
- * Returns the MediaChannel constant associated with the String value.
- */
- public static Channel fromString(String value) {
- if (value == null) {
- return MYRTPVOICE;
- }
- value = value.toLowerCase();
- if (value.equals("myrtpvoice")) {
- return MYRTPVOICE;
- }
- else if (value.equals("tcp")) {
- return MYRTCPVOICE;
- }
- else {
- return MYRTPVOICE;
- }
- }
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Channel other = (Channel) obj;
- if (value == null) {
- if (other.value != null) {
- return false;
- }
- }
- else if (!value.equals(other.value)) {
- return false;
- }
- return true;
- }
- /**
- * Return true if the channel is not valid.
- *
- * @return true if the channel is null
- */
- public boolean isNull() {
- if (value == null) {
- return true;
- }
- else if (value.length() == 0) {
- return true;
- }
- else {
- return false;
- }
- }
- }
- }