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 : RAckHeader.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, optional header to
020: * support RFC3262.
021: *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
022: */package javax.sip.header;
023:
024: import javax.sip.InvalidArgumentException;
025: import java.text.ParseException;
026:
027: /**
028: * This interface represents the RAck header, as defined by
029: * <a href = "http://www.ietf.org/rfc/rfc3262.txt">RFC3262</a>, this
030: * header is not part of RFC3261.
031: * <p>
032: * The PRACK messages contain an RAck header field, which indicates the
033: * sequence number of the provisional response that is being acknowledged (each
034: * provisional response is given a sequence number, carried in the RSeq header
035: * field in the Provisional response). The acknowledgements are not cumulative,
036: * and the specifications recommend a single outstanding provisional response at
037: * a time, for purposes of congestion control.
038: * <p>
039: * The RAck header contains two numbers and a method tag. The first number is
040: * the sequence number from the RSeqHeader in the provisional response that is
041: * being acknowledged. The next number is the sequence number that is copied
042: * from the CSeqHeader along with the method tag, from the response that is being
043: * acknowledged.
044: * <p>
045: * For Example:<br>
046: * <code>RAck: 776656 1 INVITE</code>
047: * <p>
048: * A server must ignore Headers that it does not understand. A proxy must not
049: * remove or modify Headers that it does not understand.
050: *
051: * @author BEA Systems, NIST
052: * @version 1.2
053: */
054:
055: public interface RAckHeader extends Header {
056:
057: /**
058: * Sets the method of RAckHeader, which correlates to the method of the
059: * CSeqHeader of the provisional response being acknowledged.
060: *
061: * @param method - the new string value of the method of the RAckHeader
062: * @throws ParseException which signals that an error has been reached
063: * unexpectedly while parsing the method value.
064: */
065: public void setMethod(String method) throws ParseException;
066:
067: /**
068: * Gets the method of RAckHeader.
069: *
070: * @return method of RAckHeader.
071: */
072: public String getMethod();
073:
074: /**
075: * Sets the sequence number value of the CSeqHeader of the provisional
076: * response being acknowledged. The sequence number MUST be expressible as
077: * a 32-bit unsigned integer and MUST be less than 2**31.
078: *
079: * @param cSeqNumber - the new cSeq number of this RAckHeader.
080: * @throws InvalidArgumentException if supplied value is less than zero.
081: */
082: public void setCSeqNumber(int cSeqNumber)
083: throws InvalidArgumentException;
084:
085: /**
086: * Gets the CSeq sequence number of this RAckHeader.
087: *
088: * @return the integer value of the cSeq number of the RAckHeader.
089: */
090: public int getCSeqNumber();
091:
092: /**
093: * Sets the sequence number value of the RSeqHeader of the provisional
094: * response being acknowledged. The sequence number MUST be expressible as
095: * a 32-bit unsigned integer and MUST be less than 2**31.
096: *
097: * @param rSeqNumber - the new rSeq number of this RAckHeader.
098: * @throws InvalidArgumentException if supplied value is less than zero.
099: */
100: public void setRSeqNumber(int rSeqNumber)
101: throws InvalidArgumentException;
102:
103: /**
104: * Gets the RSeq sequence number of this RAckHeader.
105: *
106: * @return the integer value of the RSeq number of the RAckHeader.
107: */
108: public int getRSeqNumber();
109:
110: /**
111: * Name of RAckHeader.
112: */
113: public final static String NAME = "RAck";
114:
115: }
|