|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object
|
+--java.util.EventObject
|
+--jain.protocol.ip.sip.message.Message
|
+--jain.protocol.ip.sip.message.RequestMessage
|
+--jain.protocol.ip.sip.message.AckMessage
This class represents an ACK request message. An AckMessage confirms that the client has received a final ResponseMessage to an InviteMessage. (AckMessage is used only with InviteMessages.) Success ResponseMessages are acknowledged by client user agents, all other final ResponseMessages by the first proxy or client user agent to receive the ResponseMessage. The ViaHeader is always initialized to the host that originates the AckMessage, i.e., the client user agent after a Success ResponseMessage or the first proxy to receive a non-Success final ResponseMessage. The AckMessage is forwarded as the corresponding InviteMessaget, based on its Request-URI.
The AckMessage may contain a message body with the final session description to be used by the callee. If the AckMessage body is empty, the callee uses the session description in the InviteMessage.
A proxy server receiving an AckMessage after having sent a Redirection, Client-Error, Server-Error, or Clobal-Failure ResponseMessage must make a determination about whether the AckMessage is for it, or for some user agent or proxy server further downstream. This determination is made by examining the tag of the ToHeader. If the tag of the AckMessage ToHeader matches the tag in the To ToHeader of the ResponseMessage, and the FromHeader, CSeqHeader and CallIdHeaders in the ResponseMessage match those in the AckMessage, the AckMessage is meant for the proxy server. Otherwise, the AckMessage should be proxied downstream as any other RequestMessage.
It is possible for a user agent client or proxy server to receive multiple Redirection, Client-Error, Server-Error, and Clobal-Failure ResponseMessages to a RequestMessage along a single branch. This can happen under various error conditions, typically when a forking proxy transitions from stateful to stateless before receiving all ResponseMessages. The various ResponseMessages will all be identical, except for the tag in the ToHeader, which is different for each one. It can therefore be used as a means to disambiguate them.
AckMessages must be supported by SIP proxy, redirect and user agent servers as well as clients.
RequestMessage,
ResponseMessage,
InviteMessage,
ToHeader,
FromHeader,
CallIdHeader,
CSeqHeader, Serialized Form| Field Summary | |
static java.lang.String |
method
AckMessage's method |
| Constructor Summary | |
AckMessage(java.lang.Object source,
ResponseMessage response)
Constructor of AckMessage without body based on received ResponseMessage |
|
AckMessage(java.lang.Object source,
ResponseMessage response,
java.lang.Object body,
ContentTypeHeader contentTypeHeader)
Constructor of AckMessage with body based on received ResponseMessage |
|
AckMessage(java.lang.Object source,
URI requestURI,
CallIdHeader callIdHeader,
CSeqHeader cSeqHeader,
FromHeader fromHeader,
ToHeader toHeader,
ViaHeader[] viaHeaders)
Constructor of AckMessage without body |
|
AckMessage(java.lang.Object source,
URI requestURI,
CallIdHeader callIdHeader,
CSeqHeader cSeqHeader,
FromHeader fromHeader,
ToHeader toHeader,
ViaHeader[] viaHeaders,
java.lang.Object body,
ContentTypeHeader contentTypeHeader)
Constructor of AckMessage with body |
|
| Methods inherited from class java.util.EventObject |
getSource |
| Methods inherited from class java.lang.Object |
equals,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
| Field Detail |
public static final java.lang.String method
| Constructor Detail |
public AckMessage(java.lang.Object source,
ResponseMessage response)
throws java.lang.IllegalArgumentException,
HeaderNotSetException
source - source of the InviteMessageresponse - received ResponseMessage
public AckMessage(java.lang.Object source,
ResponseMessage response,
java.lang.Object body,
ContentTypeHeader contentTypeHeader)
throws java.lang.IllegalArgumentException,
HeaderNotSetException
source - source of the InviteMessageresponse - received ResponseMessagebody - bodycontentTypeHeader - ContentTypeHeader
public AckMessage(java.lang.Object source,
URI requestURI,
CallIdHeader callIdHeader,
CSeqHeader cSeqHeader,
FromHeader fromHeader,
ToHeader toHeader,
ViaHeader[] viaHeaders)
throws java.lang.IllegalArgumentException
source - source of the InviteMessagerequestURI - Request URIcallIdHeader - CallIdHeadercSeqHeader - CSeqHeaderfromHeader - FromHeadertoHeader - ToHeaderviaHeaders - ViaHeaders
public AckMessage(java.lang.Object source,
URI requestURI,
CallIdHeader callIdHeader,
CSeqHeader cSeqHeader,
FromHeader fromHeader,
ToHeader toHeader,
ViaHeader[] viaHeaders,
java.lang.Object body,
ContentTypeHeader contentTypeHeader)
throws java.lang.IllegalArgumentException
source - source of the InviteMessagerequestURI - Request URIcallIdHeader - CallIdHeadercSeqHeader - CSeqHeaderfromHeader - FromHeadertoHeader - ToHeaderviaHeaders - ViaHeadersbody - bodycontentTypeHeader - ContentTypeHeader
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
Copyright - 2000 Sun Microsystems