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 : TimeStampHeader.java
015: * Author : Phelim O'Doherty
016: *
017: * HISTORY
018: * Version Date Author Comments
019: * 1.1 08/10/2002 Phelim O'Doherty
020: *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
021: */package javax.sip.header;
022:
023: import javax.sip.InvalidArgumentException;
024:
025: /**
026: * The Timestamp header field describes when the UAC sent the request to the
027: * UAS. When a 100 (Trying) response is generated, any Timestamp header field
028: * present in the request MUST be copied into this 100 (Trying) response. If
029: * there is a delay in generating the response, the UAS SHOULD add a delay
030: * value into the Timestamp value in the response. This value MUST contain the
031: * difference between the time of sending of the response and receipt of the
032: * request, measured in seconds. Although there is no normative behavior
033: * defined here that makes use of the header, it allows for extensions or
034: * SIP applications to obtain RTT estimates, that may be used to adjust the
035: * timeout value for retransmissions.
036: * <p>
037: * For Example:<br>
038: * <code>Timestamp: 54</code>
039: *
040: * @author BEA Systems, NIST
041: * @version 1.2
042: */
043:
044: public interface TimeStampHeader extends Header {
045:
046: /**
047: * Sets the timestamp value of this TimeStampHeader to the new timestamp
048: * value passed to this method.
049: *
050: * @param timeStamp - the new float timestamp value
051: * @throws InvalidArgumentException if the timestamp value argument is a
052: * negative value.
053: * @deprecated This method is replaced with {@link #setTimeStamp(float)}.
054: */
055: public void setTimeStamp(float timeStamp)
056: throws InvalidArgumentException;
057:
058: /**
059: * Gets the timestamp value of this TimeStampHeader.
060: *
061: * @return the timestamp value of this TimeStampHeader
062: * @deprecated This method is replaced with {@link #getTime()}.
063: */
064: public float getTimeStamp();
065:
066: /**
067: * Gets the timestamp value of this TimeStampHeader.
068: *
069: * @since v1.2
070: *
071: * @return the timestamp value of this TimeStampHeader
072: */
073: public long getTime();
074:
075: /**
076: * Sets the timestamp value of this TimeStampHeader to the new timestamp
077: * value passed to this method. This method allows applications to conveniantly
078: * use System.currentTimeMillis to set the timeStamp value.
079: *
080: * @since v1.2
081: *
082: * @param timeStamp - the new long timestamp value
083: * @throws InvalidArgumentException if the timestamp value argument is a
084: * negative value.
085: */
086: public void setTime(long timeStamp) throws InvalidArgumentException;
087:
088: /**
089: * Gets delay of TimeStampHeader. This method returns <code>-1</code> if the
090: * delay parameter is not set.
091: *
092: * @return the delay value of this TimeStampHeader
093: * @deprecated This method is replaced with {@link #getTimeDelay()}.
094: */
095:
096: public float getDelay();
097:
098: /**
099: * Sets the new delay value of the TimestampHeader to the delay parameter
100: * passed to this method
101: *
102: * @param delay - the new float delay value
103: * @throws InvalidArgumentException if the delay value argumenmt is a
104: * negative value other than the default value <code>-1</code>.
105: * @deprecated This method is replaced with {@link #setTimeDelay(int)}.
106: */
107:
108: public void setDelay(float delay) throws InvalidArgumentException;
109:
110: /**
111: * Gets delay of TimeStampHeader. This method returns <code>-1</code> if the
112: * delay parameter is not set.
113: *
114: * @since v1.2
115: * @return the delay value of this TimeStampHeader as an integer.
116: */
117:
118: public int getTimeDelay();
119:
120: /**
121: * Sets the new delay value of the TimestampHeader to the delay parameter
122: * passed to this method
123: *
124: * @since v1.2
125: * @param delay - the new int delay value
126: * @throws InvalidArgumentException if the delay value argumenmt is a
127: * negative value other than the default value <code>-1</code>.
128: */
129:
130: public void setTimeDelay(int delay) throws InvalidArgumentException;
131:
132: /**
133: * Name of TimeStampHeader
134: */
135: public final static String NAME = "Timestamp";
136: }
|