001: /**
002: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
003: * Unpublished - rights reserved under the Copyright Laws of the United States.
004: * Copyright © 2003 Sun Microsystems, Inc. All rights reserved.
005: * Copyright © 2005 BEA Systems, Inc. All rights reserved.
006: *
007: * Use is subject to license terms.
008: *
009: * This distribution may include materials developed by third parties.
010: *
011: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
012: *
013: * Module Name : JSIP Specification
014: * File Name : TimeoutEvent.java
015: * Author : Phelim O'Doherty
016: *
017: * HISTORY
018: * Version Date Author Comments
019: * 1.1 08/10/2002 Phelim O'Doherty Initial version
020: *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
021: */package javax.sip;
022:
023: import java.util.*;
024:
025: /**
026: * This class represents an Timeout event that is passed from a SipProvider to
027: * its SipListener. A specific message may need retransmitted on a specific
028: * transaction numerous times before it is acknowledged by the receiver. If the
029: * message is not acknowledged after a specified period in the underlying
030: * implementation the transaction will expire, this occurs usually
031: * after seven retransmissions. The mechanism to alert an application that a
032: * message for a an underlying transaction needs retransmitted (i.e. 200OK) or
033: * an underlying transaction has expired is a Timeout Event.
034: * <p>
035: * A Timeout Event can be of two different types, namely:
036: * <ul>
037: * <li>{@link Timeout#RETRANSMIT}
038: * <li>{@link Timeout#TRANSACTION}
039: * </ul>
040: * A TimeoutEvent contains the following information:
041: * <ul>
042: * <li>source - the SipProvider that sent the TimeoutEvent.
043: * <li>transaction - the transaction that this Timeout applies to.
044: * <li>isServerTransaction - boolean indicating whether the transaction refers to
045: * a client or server transaction.
046: * <li>timeout - indicates what type of {@link Timeout} occurred.
047: * </ul>
048: *
049: * @see Timeout
050: *
051: * @author BEA Systems, NIST
052: * @version 1.2
053: */
054: public class TimeoutEvent extends EventObject {
055:
056: /**
057: * Constructs a TimeoutEvent to indicate a server retransmission or transaction
058: * timeout.
059: *
060: * @param source - the source of TimeoutEvent.
061: * @param serverTransaction - the server transaction that timed out.
062: * @param timeout - indicates if this is a retranmission or transaction
063: * timeout event.
064: */
065: public TimeoutEvent(Object source,
066: ServerTransaction serverTransaction, Timeout timeout) {
067: super (source);
068: m_serverTransaction = serverTransaction;
069: m_isServerTransaction = true;
070: m_timeout = timeout;
071: }
072:
073: /**
074: * Constructs a TimeoutEvent to indicate a client retransmission or transaction
075: * timeout.
076: *
077: * @param source - source of TimeoutEvent.
078: * @param clientTransaction - the client transaction that timed out.
079: * @param timeout - indicates if this is a retranmission or transaction
080: * timeout event.
081: */
082: public TimeoutEvent(Object source,
083: ClientTransaction clientTransaction, Timeout timeout) {
084: super (source);
085: m_clientTransaction = clientTransaction;
086: m_isServerTransaction = false;
087: m_timeout = timeout;
088: }
089:
090: /**
091: * Gets the server transaction associated with this TimeoutEvent.
092: *
093: * @return server transaction associated with this TimeoutEvent, or null if this
094: * event is specific to a client transaction.
095: */
096: public ServerTransaction getServerTransaction() {
097: return m_serverTransaction;
098: }
099:
100: /**
101: * Gets the client transaction associated with this TimeoutEvent.
102: *
103: * @return client transaction associated with this TimeoutEvent, or null if
104: * this event is specific to a server transaction.
105: */
106: public ClientTransaction getClientTransaction() {
107: return m_clientTransaction;
108: }
109:
110: /**
111: * Indicates if the transaction associated with this TimeoutEvent is a server
112: * transaction.
113: *
114: * @return returns true if a server transaction or false if a client
115: * transaction.
116: */
117: public boolean isServerTransaction() {
118: return m_isServerTransaction;
119: }
120:
121: /**
122: * Gets the event type of this TimeoutEvent. The event type can be used to
123: * determine if this Timeout Event is one of the following types:
124: * <ul>
125: * <li>{@link Timeout#TRANSACTION}
126: * <li>{@link Timeout#RETRANSMIT}
127: * </ul>
128: *
129: * @return the event type of this TimeoutEvent
130: */
131: public Timeout getTimeout() {
132: return m_timeout;
133: }
134:
135: // internal variables
136: private Timeout m_timeout;
137: private boolean m_isServerTransaction;
138: private ServerTransaction m_serverTransaction = null;
139: private ClientTransaction m_clientTransaction = null;
140:
141: }
|