jain.protocol.ip.sip.header
Class RecordRouteHeader

java.lang.Object
  |
  +--jain.protocol.ip.sip.header.Header
        |
        +--jain.protocol.ip.sip.header.GeneralHeader
              |
              +--jain.protocol.ip.sip.header.RecordRouteHeader

public final class RecordRouteHeader
extends GeneralHeader

This class represents the Record-Route request and response header. The RecordRouteHeader is added to a RequestMessage by any proxy that insists on being in the path of subsequent RequestMessages for the same call leg. It contains a globally reachable RequestURI that identifies the proxy server. Each proxy server adds its RequestURI to the beginning of the list.

The server copies the RecordRouteHeader unchanged into the ResponseMessage. (RecordRouteHeader is only relevant for SUCCESS ResponseMessages.)

The calling user agent client copies the RecordRouteHeaders into RouteHeaders of subsequent RequestMessages within the same call leg, reversing the order, so that the first entry is closest to the user agent client. If the ResponseMessage contained a ContactHeader field, the calling user agent adds its content as the last RouteHeader. Unless this would cause a loop, any client must send any subsequent RequestMessages for this call leg to the RequestURI in the first RouteHeader and remove that entry.

The calling user agent must not use the RecordRouteHeaders in RequestMessages that contain RouteHeaders.

Some proxies, such as those controlling firewalls or in an automatic call distribution (ACD) system, need to maintain call state and thus need to receive any ByeMessages and AckMessages for the call.

Proxy servers should use the SipURL maddr in the NameAddress containing their address to ensure that subsequent RequestMessages are guaranteed to reach exactly the same server.

Version:
0.6
See Also:
RouteHeader

Field Summary
static java.lang.String token
          Token of RecordRouteHeader
 
Fields inherited from class jain.protocol.ip.sip.header.Header
ENTITY_HEADER, GENERAL_HEADER, REQUEST_HEADER, RESPONSE_HEADER
 
Constructor Summary
RecordRouteHeader(NameAddress nameAddress)
          Creates a RecordRouteHeader based on given NameAddress
 
Method Summary
 java.lang.Object clone()
          Creates and returns a copy of RecordRouteHeader
 boolean equals(RecordRouteHeader recordRouteHeader)
          Indicates whether some other RecordRouteHeader is "equal to" this one
 NameAddress getNameAddress()
          Gets NameAddress of RecordRouteHeader
 java.lang.String getValue()
          Gets value of RecordRouteHeader
 void setNameAddress(NameAddress nameAddress)
          Sets NameAddress of RecordRouteHeader
 
Methods inherited from class jain.protocol.ip.sip.header.Header
equals, getHeaderType, getToken, setValue, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

token

public static final java.lang.String token
Token of RecordRouteHeader
Constructor Detail

RecordRouteHeader

public RecordRouteHeader(NameAddress nameAddress)
                  throws java.lang.IllegalArgumentException
Creates a RecordRouteHeader based on given NameAddress
Parameters:
nameAddress - NameAddress
Throws:
java.lang.IllegalArgumentException - if nameAddress is null
Method Detail

getNameAddress

public NameAddress getNameAddress()
Gets NameAddress of RecordRouteHeader
Returns:
NameAddress of RecordRouteHeader

setNameAddress

public void setNameAddress(NameAddress nameAddress)
                    throws java.lang.IllegalArgumentException
Sets NameAddress of RecordRouteHeader
Parameters:
nameAddress - NameAddress
Throws:
java.lang.IllegalArgumentException - if nameAddress is null

getValue

public java.lang.String getValue()
Gets value of RecordRouteHeader
Overrides:
getValue in class Header
Returns:
value of RecordRouteHeader

clone

public java.lang.Object clone()
Creates and returns a copy of RecordRouteHeader
Overrides:
clone in class Header

equals

public boolean equals(RecordRouteHeader recordRouteHeader)
Indicates whether some other RecordRouteHeader is "equal to" this one
Parameters:
recordRouteHeader - the RecordRouteHeader with which to compare


If you have any comments or queries, please mail them to JAIN-SIP-interest@sun.com


Copyright - 2000 Sun Microsystems