001: /*
002: * Portions Copyright 2000-2007 Sun Microsystems, Inc. All Rights
003: * Reserved. Use is subject to license terms.
004: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
005: *
006: * This program is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU General Public License version
008: * 2 only, as published by the Free Software Foundation.
009: *
010: * This program is distributed in the hope that it will be useful, but
011: * WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * General Public License version 2 for more details (a copy is
014: * included at /legal/license.txt).
015: *
016: * You should have received a copy of the GNU General Public License
017: * version 2 along with this work; if not, write to the Free Software
018: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
019: * 02110-1301 USA
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
022: * Clara, CA 95054 or visit www.sun.com if you need additional
023: * information or have any questions.
024: */
025: package gov.nist.siplite;
026:
027: import gov.nist.siplite.stack.*;
028: import gov.nist.core.*;
029:
030: /**
031: * Implementation of the ListeningPoint interface
032: *
033: * @version JAIN-SIP-1.1
034: *
035: *
036: * <a href="{@docRoot}/uncopyright.html">This code is in the public domain.</a>
037: *
038: */
039: public class ListeningPoint {
040: /** Host being monitored. */
041: protected String host;
042: /** Current connection. */
043: protected String transport;
044:
045: /** My port. (same thing as in the message processor) */
046:
047: int port;
048:
049: /**
050: * Pointer to the imbedded mesage processor.
051: */
052: protected MessageProcessor messageProcessor;
053:
054: /**
055: * Provider back pointer.
056: */
057: protected SipProvider sipProviderImpl;
058:
059: /**
060: * Our stack.
061: */
062: protected SipStack sipStack;
063:
064: /**
065: * Constructs a key to refer to this structure from the SIP stack.
066: * @param host host string
067: * @param port port
068: * @param transport transport
069: * @return a string that is used as a key
070: */
071: public static String makeKey(String host, int port, String transport) {
072: return new StringBuffer(host).append(":").append(port).append(
073: "/").append(transport).toString().toLowerCase();
074: }
075:
076: /**
077: * Gets the key for this struct.
078: * @return get the host
079: */
080: protected String getKey() {
081: return makeKey(host, port, transport);
082: // return makeKey(host, port, transport);
083: }
084:
085: /**
086: * Sets the sip provider for this structure.
087: * @param sipProviderImpl provider to set
088: */
089: protected void setSipProvider(SipProvider sipProviderImpl) {
090: this .sipProviderImpl = sipProviderImpl;
091: }
092:
093: /**
094: * Removes the sip provider from this listening point.
095: */
096: protected void removeSipProvider() {
097: this .sipProviderImpl = null;
098: }
099:
100: /**
101: * Constructor.
102: * @param sipStack context for the current transaction
103: * @param host Host name
104: * @param port the channel to moonitor
105: * @param transport the connection being used
106: */
107: protected ListeningPoint(SipStack sipStack, String host, int port,
108: String transport) {
109: this .sipStack = (SipStack) sipStack;
110: // this.host = sipStack.getIPAddress();
111: this .host = host;
112: this .port = port;
113: this .transport = transport;
114: }
115:
116: /**
117: * Gets host name of this ListeningPoint.
118: *
119: * @return host of ListeningPoint
120: */
121: public String getHost() {
122: return this .sipStack.getHostAddress();
123: }
124:
125: /**
126: * Gets the port of the ListeningPoint. The default port of a ListeningPoint
127: * is dependent on the scheme and transport. For example:
128: * <ul>
129: * <li>The default port is 5060 if the transport
130: * UDP the scheme is <i>sip:</i>.
131: * <li>The default port is 5060 if the transport
132: * is TCP the scheme is <i>sip:</i>.
133: * <li>The default port is 5060 if the transport
134: * is SCTP the scheme is <i>sip:</i>.
135: * <li>The default port is 5061 if the transport
136: * is TLS over TCP the scheme is <i>sip:</i>.
137: * <li>The default port is 5061 if the transport
138: * is TCP the scheme is <i>sips:</i>.
139: * </ul>
140: *
141: * @return port of ListeningPoint
142: */
143: public int getPort() {
144: return messageProcessor.getPort();
145: }
146:
147: /**
148: * Gets transport of the ListeningPoint.
149: *
150: * @return transport of ListeningPoint
151: */
152: public String getTransport() {
153: return messageProcessor.getTransport();
154: }
155:
156: /**
157: * Getsthe provider.
158: *
159: * @return the provider.
160: */
161: public SipProvider getProvider() {
162: return this.sipProviderImpl;
163: }
164:
165: }
|