• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Conditions Of Use
3  *
4  * This software was developed by employees of the National Institute of
5  * Standards and Technology (NIST), an agency of the Federal Government.
6  * Pursuant to title 15 Untied States Code Section 105, works of NIST
7  * employees are not subject to copyright protection in the United States
8  * and are considered to be in the public domain.  As a result, a formal
9  * license is not needed to use the software.
10  *
11  * This software is provided by NIST as a service and is expressly
12  * provided "AS IS."  NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
13  * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
14  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
15  * AND DATA ACCURACY.  NIST does not warrant or make any representations
16  * regarding the use of the software or the results thereof, including but
17  * not limited to the correctness, accuracy, reliability or usefulness of
18  * the software.
19  *
20  * Permission to use this software is contingent upon your acceptance
21  * of the terms of this agreement
22  *
23  * .
24  *
25  */
26 /*******************************************************************************
27  * Product of NIST/ITL Advanced Networking Technologies Division (ANTD).        *
28  *******************************************************************************/
29 
30 package gov.nist.javax.sip.header;
31 
32 import javax.sip.InvalidArgumentException;
33 import javax.sip.header.*;
34 
35 /**
36  * TimeStamp SIP Header.
37  *
38  * @version 1.2 $Revision: 1.7 $ $Date: 2009/10/18 13:46:31 $
39  *
40  * @author M. Ranganathan <br/>
41  * @author Olivier Deruelle <br/>
42  *
43  *
44  *
45  */
46 public class TimeStamp extends SIPHeader implements TimeStampHeader {
47 
48     /**
49      * Comment for <code>serialVersionUID</code>
50      */
51     private static final long serialVersionUID = -3711322366481232720L;
52 
53     /**
54      * timeStamp field
55      */
56     protected long timeStamp = -1;
57 
58     /**
59      * delay field
60      */
61     protected int delay = -1;
62 
63     protected float delayFloat = -1;
64 
65     private float timeStampFloat = -1;
66 
67     /**
68      * Default Constructor
69      */
TimeStamp()70     public TimeStamp() {
71         super(TIMESTAMP);
72         delay = -1;
73     }
74 
getTimeStampAsString()75     private String getTimeStampAsString() {
76         if (timeStamp == -1 && timeStampFloat == -1)
77             return "";
78         else if (timeStamp != -1)
79             return Long.toString(timeStamp);
80         else
81             return Float.toString(timeStampFloat);
82     }
83 
getDelayAsString()84     private String getDelayAsString() {
85         if (delay == -1 && delayFloat == -1)
86             return "";
87         else if (delay != -1)
88             return Integer.toString(delay);
89         else
90             return Float.toString(delayFloat);
91     }
92 
93     /**
94      * Return canonical form of the header.
95      *
96      * @return String
97      */
encodeBody()98     public String encodeBody() {
99         StringBuffer retval = new StringBuffer();
100         String s1 = getTimeStampAsString();
101         String s2 = getDelayAsString();
102         if (s1.equals("") && s2.equals(""))
103             return "";
104         if (!s1.equals(""))
105             retval.append(s1);
106         if (!s2.equals(""))
107             retval.append(" ").append(s2);
108         return retval.toString();
109 
110     }
111 
112     /**
113      * return true if delay exists
114      *
115      * @return boolean
116      */
hasDelay()117     public boolean hasDelay() {
118         return delay != -1;
119     }
120 
121     /*
122      * remove the Delay field
123      */
removeDelay()124     public void removeDelay() {
125         delay = -1;
126     }
127 
128 
129 
setTimeStamp(float timeStamp)130     public void setTimeStamp(float timeStamp) throws InvalidArgumentException {
131         if (timeStamp < 0)
132             throw new InvalidArgumentException(
133                     "JAIN-SIP Exception, TimeStamp, "
134                             + "setTimeStamp(), the timeStamp parameter is <0");
135         this.timeStamp = -1;
136         this.timeStampFloat = timeStamp;
137     }
138 
139 
getTimeStamp()140     public float getTimeStamp() {
141         return this.timeStampFloat == -1 ? Float.valueOf(timeStamp).floatValue()
142                 : this.timeStampFloat;
143     }
144 
145 
146 
getDelay()147     public float getDelay() {
148         return delayFloat == -1 ? Float.valueOf(delay).floatValue() : delayFloat;
149     }
150 
151     /**
152      * Sets the new delay value of the TimestampHeader to the delay paramter
153      * passed to this method
154      *
155      * @param delay -
156      *            the Float.valueOf delay value
157      * @throws InvalidArgumentException
158      *             if the delay value argumenmt is a negative value other than
159      *             <code>-1</code>.
160      */
161 
setDelay(float delay)162     public void setDelay(float delay) throws InvalidArgumentException {
163         if (delay < 0 && delay != -1)
164             throw new InvalidArgumentException(
165                     "JAIN-SIP Exception, TimeStamp, "
166                             + "setDelay(), the delay parameter is <0");
167         this.delayFloat = delay;
168         this.delay = -1;
169     }
170 
getTime()171     public long getTime() {
172         return this.timeStamp == -1 ? (long) timeStampFloat : timeStamp;
173     }
174 
getTimeDelay()175     public int getTimeDelay() {
176         return this.delay == -1 ? (int) delayFloat : delay;
177 
178     }
179 
setTime(long timeStamp)180     public void setTime(long timeStamp) throws InvalidArgumentException {
181         if (timeStamp < -1)
182             throw new InvalidArgumentException("Illegal timestamp");
183         this.timeStamp = timeStamp;
184         this.timeStampFloat = -1;
185 
186     }
187 
setTimeDelay(int delay)188     public void setTimeDelay(int delay) throws InvalidArgumentException {
189         if (delay < -1)
190             throw new InvalidArgumentException("Value out of range " + delay);
191         this.delay = delay;
192         this.delayFloat = -1;
193 
194     }
195 
196 }
197