gov.nist.javax.sip.stack
クラス SIPDialog

java.lang.Object
  上位を拡張 gov.nist.javax.sip.stack.SIPDialog
すべての実装されたインタフェース:
PendingRecord, java.io.Serializable, javax.sip.Dialog

public class SIPDialog
extends java.lang.Object
implements javax.sip.Dialog, PendingRecord

Tracks dialogs. A dialog is a peer to peer association of communicating SIP entities. For INVITE transactions, a Dialog is created when a success message is received (i.e. a response that has a To tag). The SIP Protocol stores enough state in the message structure to extract a dialog identifier that can be used to retrieve this structure from the SipStack.

バージョン:
JAIN-SIP-1.1 $Revision: 1.6 $ $Date: 2004/10/05 16:22:37 $
作成者:
M. Ranganathan
Bugs were reported by Antonis Karydas, Brad Templeton and Alex Rootham. This code is in the public domain.
関連項目:
直列化された形式

入れ子のクラスの概要
 class SIPDialog.DialogTimerTask
           
 
フィールドの概要
static int COMPLETED_STATE
           
static int CONFIRMED_STATE
           
static int EARLY_STATE
           
static int TERMINATED_STATE
           
 
メソッドの概要
 void ackReceived(SIPRequest sipRequest)
          Mark that the dialog has seen an ACK.
 void addRoute(SIPMessage sipMessage)
          Extract the route information from this SIP Message and add the relevant information to the route set.
 void addTransaction(SIPTransaction transaction)
          Add a transaction record to the dialog.
 void clearPending()
          Clear any pending request flag.
 javax.sip.message.Request createRequest(java.lang.String method)
          Creates a new Request message based on the dialog creating request.
 void delete()
          This method will release all resources associated with this dialog that are tracked by the Provider.
 java.lang.Object getApplicationData()
          Get ptr to opaque application data.
 javax.sip.header.CallIdHeader getCallId()
          Returns the Call-ID for this SipSession.
 java.lang.String getDialogId()
          Get the id for this dialog.
 javax.sip.Transaction getFirstTransaction()
          Get the transaction that created this dialog.
 SIPServerTransaction getInviteTransaction()
          Get the INVITE transaction (null if no invite transaction).
 SIPRequest getLastAck()
          Get the last ACK for this transaction.
 SIPTransaction getLastTransaction()
          Get the last transaction from the dialog.
 javax.sip.address.Address getLocalParty()
          Get the local Address for this dialog.
 int getLocalSequenceNumber()
          Get the local sequence number (for cseq assignment of outgoing requests within this dialog).
 java.lang.String getLocalTag()
          Get local identifier for the dialog.
 HopImpl getNextHop()
          Get the next hop to which requests in the dialog will be routed to.
 javax.sip.address.Address getRemoteParty()
          Returns the Address identifying the remote party.
 int getRemoteSequenceNumber()
          Get the remote sequence number (for cseq assignment of outgoing requests within this dialog).
 java.lang.String getRemoteTag()
          Get peer identifier identifier for the dialog.
 javax.sip.address.Address getRemoteTarget()
          Returns the Address identifying the remote target.
 java.util.Iterator getRouteSet()
          Gets the route set for the dialog.
 javax.sip.DialogState getState()
          Returns the current state of the dialogue.
 boolean hasPending()
          Return true if this has a pending request
 void incrementLocalSequenceNumber()
          Increment the local CSeq # for the dialog.
 boolean isAckSeen()
          Return true if the dialog has already seen the ack.
 boolean isClientDialog()
          Return true if this is a client dialog.
 boolean isInviteDialog()
           
 boolean isRequestConsumable(SIPRequest dialogRequest)
          Return true if this request can be consumed by the dialog.
 boolean isSecure()
          Returns true if this Dialog is secure i.e. if the request arrived over TLS, and the Request-URI contained a SIPS URI, the "secure" flag is set to TRUE.
 boolean isServer()
          Return true if is server.
 boolean isTerminated()
          return true if the record is done.
 void printDebugInfo()
          Debugging print for the dialog.
 void processPending()
          Process the pending request.
 void requestConsumed()
          Updates the next consumable seqno and notifies the pending thread if there are any queued requests.
 void resendAck()
          Resend the last ack.
 void sendAck(javax.sip.message.Request request)
          Sends ACK Request to the remote party of this Dialogue.
 void sendRequest(javax.sip.ClientTransaction clientTransactionId)
          Sends a Request to the remote party of this dialog.
 void setApplicationData(java.lang.Object applicationData)
          Set ptr to app data.
 void setDefaultRoute(Route defaultRoute)
          Set the default route (the default next hop for the proxy or the proxy address for the user agent).
 void setDialogId(java.lang.String dialogId)
          Set the dialog identifier.
 void setLocalTag(java.lang.String mytag)
          Set local tag for the transaction.
 void setRemoteTag(java.lang.String hisTag)
          Set the remote tag.
 void setStack(SIPTransactionStack sipStack)
          Set the stack address.
 void setState(int state)
          Set the state for this dialog.
 void setUser(java.lang.String user)
          Set the user name for the default route.
 
クラス java.lang.Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

EARLY_STATE

public static final int EARLY_STATE
関連項目:
定数フィールド値

CONFIRMED_STATE

public static final int CONFIRMED_STATE
関連項目:
定数フィールド値

COMPLETED_STATE

public static final int COMPLETED_STATE
関連項目:
定数フィールド値

TERMINATED_STATE

public static final int TERMINATED_STATE
関連項目:
定数フィールド値
メソッドの詳細

isTerminated

public boolean isTerminated()
return true if the record is done.

定義:
インタフェース PendingRecord 内の isTerminated

setApplicationData

public void setApplicationData(java.lang.Object applicationData)
Set ptr to app data.

定義:
インタフェース javax.sip.Dialog 内の setApplicationData

getApplicationData

public java.lang.Object getApplicationData()
Get ptr to opaque application data.

定義:
インタフェース javax.sip.Dialog 内の getApplicationData

requestConsumed

public void requestConsumed()
Updates the next consumable seqno and notifies the pending thread if there are any queued requests.


isRequestConsumable

public boolean isRequestConsumable(SIPRequest dialogRequest)
Return true if this request can be consumed by the dialog.

パラメータ:
dialogRequest - is the request to check with the dialog.
戻り値:
true if the dialogRequest sequence number matches the next consumable seqno.

getNextHop

public HopImpl getNextHop()
                   throws javax.sip.SipException
Get the next hop to which requests in the dialog will be routed to.

戻り値:
the next hop to which to send the outbound request.
例外:
javax.sip.SipException

isClientDialog

public boolean isClientDialog()
Return true if this is a client dialog.

戻り値:
true if the transaction that created this dialog is a client transaction and false otherwise.

setState

public void setState(int state)
Set the state for this dialog.

パラメータ:
state - is the state to set for the dialog.

printDebugInfo

public void printDebugInfo()
Debugging print for the dialog.


ackReceived

public void ackReceived(SIPRequest sipRequest)
Mark that the dialog has seen an ACK.


isAckSeen

public boolean isAckSeen()
Return true if the dialog has already seen the ack.

戻り値:
flag that records if the ack has been seen.

getLastAck

public SIPRequest getLastAck()
Get the last ACK for this transaction.


getFirstTransaction

public javax.sip.Transaction getFirstTransaction()
Get the transaction that created this dialog.

定義:
インタフェース javax.sip.Dialog 内の getFirstTransaction

getRouteSet

public java.util.Iterator getRouteSet()
Gets the route set for the dialog. When acting as an User Agent Server the route set MUST be set to the list of URIs in the Record-Route header field from the request, taken in order and preserving all URI parameters. When acting as an User Agent Client the route set MUST be set to the list of URIs in the Record-Route header field from the response, taken in reverse order and preserving all URI parameters. If no Record-Route header field is present in the request or response, the route set MUST be set to the empty set. This route set, even if empty, overrides any pre-existing route set for future requests in this dialog.

Requests within a dialog MAY contain Record-Route and Contact header fields. However, these requests do not cause the dialog's route set to be modified.

The User Agent Client uses the remote target and route set to build the Request-URI and Route header field of the request.

定義:
インタフェース javax.sip.Dialog 内の getRouteSet
戻り値:
an Iterator containing a list of route headers to be used for forwarding. Empty iterator is returned if route has not been established.

setStack

public void setStack(SIPTransactionStack sipStack)
Set the stack address. Prevent us from routing messages to ourselves.

パラメータ:
sipStack - the address of the SIP stack.

setDefaultRoute

public void setDefaultRoute(Route defaultRoute)
Set the default route (the default next hop for the proxy or the proxy address for the user agent).

パラメータ:
defaultRoute - is the default route to set.

setUser

public void setUser(java.lang.String user)
Set the user name for the default route.

パラメータ:
user - is the user name to set for the default route.

addRoute

public void addRoute(SIPMessage sipMessage)
Extract the route information from this SIP Message and add the relevant information to the route set.

パラメータ:
sipMessage - is the SIP message for which we want to add the route.

setDialogId

public void setDialogId(java.lang.String dialogId)
Set the dialog identifier.


isServer

public boolean isServer()
Return true if is server.

定義:
インタフェース javax.sip.Dialog 内の isServer
戻り値:
true if is server transaction created this dialog.

getDialogId

public java.lang.String getDialogId()
Get the id for this dialog.

定義:
インタフェース javax.sip.Dialog 内の getDialogId
戻り値:
the string identifier for this dialog.

addTransaction

public void addTransaction(SIPTransaction transaction)
Add a transaction record to the dialog.

パラメータ:
transaction - is the transaction to add to the dialog.

setRemoteTag

public void setRemoteTag(java.lang.String hisTag)
Set the remote tag.

パラメータ:
hisTag - is the remote tag to set.

getLastTransaction

public SIPTransaction getLastTransaction()
Get the last transaction from the dialog.


getInviteTransaction

public SIPServerTransaction getInviteTransaction()
Get the INVITE transaction (null if no invite transaction).


incrementLocalSequenceNumber

public void incrementLocalSequenceNumber()
Increment the local CSeq # for the dialog. This is useful for if you want to create a hole in the sequence number i.e. route a request outside the dialog and then resume within the dialog.

定義:
インタフェース javax.sip.Dialog 内の incrementLocalSequenceNumber

getRemoteSequenceNumber

public int getRemoteSequenceNumber()
Get the remote sequence number (for cseq assignment of outgoing requests within this dialog).

定義:
インタフェース javax.sip.Dialog 内の getRemoteSequenceNumber
戻り値:
local sequence number.

getLocalSequenceNumber

public int getLocalSequenceNumber()
Get the local sequence number (for cseq assignment of outgoing requests within this dialog).

定義:
インタフェース javax.sip.Dialog 内の getLocalSequenceNumber
戻り値:
local sequence number.

getLocalTag

public java.lang.String getLocalTag()
Get local identifier for the dialog. This is used in From header tag construction for all outgoing client transaction requests for this dialog and for all outgoing responses for this dialog. This is used in To tag constuction for all outgoing transactions when we are the server of the dialog. Use this when constucting To header tags for BYE requests when we are the server of the dialog.

定義:
インタフェース javax.sip.Dialog 内の getLocalTag
戻り値:
the local tag.

getRemoteTag

public java.lang.String getRemoteTag()
Get peer identifier identifier for the dialog. This is used in To header tag construction for all outgoing requests when we are the client of the dialog. This is used in From tag construction for all outgoing requests when we are the Server of the dialog. Use this when costructing From header Tags for BYE requests when we are the server of the dialog.

定義:
インタフェース javax.sip.Dialog 内の getRemoteTag
戻り値:
the remote tag (note this is read from a response to an INVITE).

setLocalTag

public void setLocalTag(java.lang.String mytag)
Set local tag for the transaction.

パラメータ:
mytag - is the tag to use in From headers client transactions that belong to this dialog and for generating To tags for Server transaction requests that belong to this dialog.

delete

public void delete()
This method will release all resources associated with this dialog that are tracked by the Provider. Further references to the dialog by incoming messages will result in a mismatch. Since dialog destruction is left reasonably open ended in RFC3261, this delete method is provided for future use and extension methods that do not require a BYE to terminate a dialogue. The basic case of the INVITE and all dialogues that we are aware of today it is expected that BYE requests will end the dialogue.

定義:
インタフェース javax.sip.Dialog 内の delete

getCallId

public javax.sip.header.CallIdHeader getCallId()
Returns the Call-ID for this SipSession. This is the value of the Call-ID header for all messages belonging to this session.

定義:
インタフェース javax.sip.Dialog 内の getCallId
戻り値:
the Call-ID for this Dialogue

getLocalParty

public javax.sip.address.Address getLocalParty()
Get the local Address for this dialog.

定義:
インタフェース javax.sip.Dialog 内の getLocalParty
戻り値:
the address object of the local party.

getRemoteParty

public javax.sip.address.Address getRemoteParty()
Returns the Address identifying the remote party. This is the value of the To header of locally initiated requests in this dialogue when acting as an User Agent Client.

This is the value of the From header of recieved responses in this dialogue when acting as an User Agent Server.

定義:
インタフェース javax.sip.Dialog 内の getRemoteParty
戻り値:
the address object of the remote party.

getRemoteTarget

public javax.sip.address.Address getRemoteTarget()
Returns the Address identifying the remote target. This is the value of the Contact header of recieved Responses for Requests or refresh Requests in this dialogue when acting as an User Agent Client

This is the value of the Contact header of recieved Requests or refresh Requests in this dialogue when acting as an User Agent Server. Bug fix sent in by Steve Crossley.

定義:
インタフェース javax.sip.Dialog 内の getRemoteTarget
戻り値:
the address object of the remote target.

getState

public javax.sip.DialogState getState()
Returns the current state of the dialogue. The states are as follows: Independent of the method, if a request outside of a dialog generates a non-2xx final response, any early dialogs created through provisional responses to that request are terminated. If no response arrives at all on the early dialog, it also terminates.

定義:
インタフェース javax.sip.Dialog 内の getState
戻り値:
a DialogState determining the current state of the dialog.
関連項目:
DialogState

isSecure

public boolean isSecure()
Returns true if this Dialog is secure i.e. if the request arrived over TLS, and the Request-URI contained a SIPS URI, the "secure" flag is set to TRUE.

定義:
インタフェース javax.sip.Dialog 内の isSecure
戻り値:
true if this dialogue was established using a sips URI over TLS, and false otherwise.

sendAck

public void sendAck(javax.sip.message.Request request)
             throws javax.sip.SipException
Sends ACK Request to the remote party of this Dialogue.

定義:
インタフェース javax.sip.Dialog 内の sendAck
パラメータ:
request - the new ACK Request message to send.
例外:
javax.sip.SipException - if implementation cannot send the ACK Request for any other reason

createRequest

public javax.sip.message.Request createRequest(java.lang.String method)
                                        throws javax.sip.SipException
Creates a new Request message based on the dialog creating request. This method should be used for but not limited to creating Bye's, Refer's and re-Invite's on the Dialog. The returned Request will be correctly formatted that is it will contain the correct CSeq header, Route headers and requestURI (derived from the remote target). This method should not be used for Ack, that is the application should create the Ack from the MessageFactory. If the route set is not empty, and the first URI in the route set contains the lr parameter (see Section 19.1.1), the UAC MUST place the remote target URI into the Request-URI and MUST include a Route header field containing the route set values in order, including all parameters. If the route set is not empty, and its first URI does not contain the lr parameter, the UAC MUST place the first URI from the route set into the Request-URI, stripping any parameters that are not allowed in a Request-URI. The UAC MUST add a Route header field containing the remainder of the route set values in order, including all parameters. The UAC MUST then place the remote target URI into the Route header field as the last value.

定義:
インタフェース javax.sip.Dialog 内の createRequest
パラメータ:
method - the string value that determines if the request to be created.
戻り値:
the newly created Request message on this Dialog.
例外:
javax.sip.SipException - if the Dialog is not yet established.

sendRequest

public void sendRequest(javax.sip.ClientTransaction clientTransactionId)
                 throws javax.sip.TransactionDoesNotExistException,
                        javax.sip.SipException
Sends a Request to the remote party of this dialog. This method implies that the application is functioning as UAC hence the underlying SipProvider acts statefully. This method is useful for sending Bye's for terminating a dialog or Re-Invites on the Dialog for third party call control.

This methods will set the From and the To tags for the outgoing request and also set the correct sequence number to the outgoing Request and associate the client transaction with this dialog. Note that any tags assigned by the user will be over-written by this method.

The User Agent must not send a BYE on a confirmed INVITE until it has received an ACK for its 2xx response or until the server transaction timeout is received.

When the retransmissionFilter is true, that is the SipProvider takes care of all retransmissions for the application, and the SipProvider can not deliver the Request after multiple retransmits the SipListener will be notified with a TimeoutEventwhen the transaction expires.

定義:
インタフェース javax.sip.Dialog 内の sendRequest
パラメータ:
clientTransactionId - the new ClientTransaction object identifying this transaction, this clientTransaction should be requested from SipProvider.getNewClientTransaction
例外:
javax.sip.TransactionDoesNotExistException - if the serverTransaction does not correspond to any existing server transaction.
javax.sip.SipException - if implementation cannot send the Request for any reason.

resendAck

public void resendAck()
               throws javax.sip.SipException
Resend the last ack.

例外:
javax.sip.SipException

isInviteDialog

public boolean isInviteDialog()

clearPending

public void clearPending()
インタフェース PendingRecord の記述:
Clear any pending request flag.

定義:
インタフェース PendingRecord 内の clearPending

hasPending

public boolean hasPending()
インタフェース PendingRecord の記述:
Return true if this has a pending request

定義:
インタフェース PendingRecord 内の hasPending

processPending

public void processPending()
インタフェース PendingRecord の記述:
Process the pending request.

定義:
インタフェース PendingRecord 内の processPending