Java Doc for Dialog.java in  » 6.0-JDK-Modules » Java-Advanced-Imaging » javax » sip » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » 6.0 JDK Modules » Java Advanced Imaging » javax.sip 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


javax.sip.Dialog

Dialog
public interface Dialog extends Serializable(Code)
A dialog represents a peer-to-peer SIP relationship between two user agents that persists for some time. Dialogs are typically used by user agents to facilitate management of state. Dialogs are typically not relevant to proxy servers. The dialog facilitates sequencing of messages between the user agents and proper routing of requests between both of them. The dialog represents a context in which to interpret SIP Transactions and Messages. However, a Dialog is not necessary for message processing.

A dialog is identified at each User Agent with a dialog Id, which consists of a Call-Id value, a local tag and a remote tag. The dialog Id at each User Agent involved in the dialog is not the same. Specifically, the local tag at one User Agent is identical to the remote tag at the peer User Agent. The tags are opaque tokens that facilitate the generation of unique dialog Ids.

A dialog contains certain pieces of data needed for further message transmissions within the dialog. This data consists of:

  • Dialog Id - used to identify the dialog.
  • Local sequence number - used to order requests from the User Agent to its peer.
  • Remote sequence number - used to order requests from its peer to the User Agent.
  • Local URI - the address of the local party.
  • Remote URI - the address of the remote party.
  • Remote target - the address from the Contact header field of the request or response or refresh request or response.
  • "secure" boolean - determines if the dialog is secure i.e. use the sips: scheme.
  • Route set - an ordered list of URIs. The route set is the list of servers that need to be traversed to send a request to the peer.
A dialog also has its own state machine, the current DialogState is determined by the sequence of messages that occur on the initial dialog.

Invite Dialog States:
Null --> Early --> Confirmed --> Terminated

Other Dialog-creating Requests Dialog States (ie. SUBSCRIBE):
Null --> Confirmed --> Terminated.

The Listener MUST ACK the 2xx response associated with an INVITE dialog. Retransmissions of the ACK in response to subsequent INVITE requests are handled by the dialog layer. If a listener does not ACK a 2XX response immediately, the implementation will terminate the Dialog automatically and remove it from the stack when the listener completes its execution.

The dialog layer MUST respond with an automatic error response when RFC3261 specifies that the User Agent MUST respond with a certain error. This does not apply for successful responses like 200 OK. The error condition relates directly to the dialog layer and the SipListener can add no meaningful information to the response. Such a response can be constructed and sent entirely by the dialog layer on behalf of the SipListener. Under such circumstances, it makes sense to let the dialog support handle the response and not bother the SipListener with it. The SipListener will not be notified with the RequestEvent upon which the Response was sent on its behalf by the Dialog layer. However, if no Dialog is registered for the transaction either automatically or under application control, then the SipListener is expected to generate and send the appropriate (error) response.

For example: In RFC3261 Chapter 14 a User Agent Server that receives a second INVITE before it sends the final response to a first INVITE with a lower CSeq sequence number on the same dialog MUST return a 500 (Server Internal Error) response to the second INVITE and MUST include a Retry-After header field with a randomly chosen value of between 0 and 10 seconds. In this release of this specification, the implementation handles retransmissions of Responses that are specified as being handled by the UA core, if there is an associated Dialog for a given transaction. If there is no associated Dialog for a given transaction, the application will be alerted to perform the retransmissions required by the UA core if desired. Applications should explicitly request such alerts see ServerTransaction.enableRetransmissionAlerts . Once enabled the SipProvider will deliver retransmission timer events to the Listener with a Timeout.RETRANSMIT notification. The SipListener can then retransmit the Response as necessary, see SipListener.processTimeout(TimeoutEvent) .

For INVITE Client Transactions:

  • UAC ACKs first 2xx response
  • Additional 2xx responses will be ACKed automatically if a Dialog is asssociated with the response
  • Additional 2xx responses will be presented to the listener if no dialog is associated with the response. In such a case the listener is expected to ACK the 2xx response.
For INVITE Server Transaction 2xx response:
  • Application sends first 2xx response ServerTransaction.sendResponse(Response) .
  • If a Dialog is not associated with a ServerTransaction, and if the application explicitly requests to be notified of such timeouts (see ServerTransaction.enableRetransmissionAlerts the SipListener is periodically alerted to retransmit 2xx responses for the ServerTransaction.
  • If a Dialog is associated with a ServerTransaction then the implementation takes care of retransmitting final responses until the ACK is received i.e. the SipListener will receive no notifications to retransmit responses.
For an INVITE server Transaction 300-699 response:
  • Either the application or the dialog layer sends the first response
  • Retransmissions of 300-699 responses from the INVITE Server Transaction are handled by the transaction layer independent of existence of an associated Dialog.
Because reliable provisional responses are always sent by the Dialog layer, the Dialog layer takes care of retrasmitting these. The application is never alerted for retransmissions of Reliable Provisional responses:
  • The application sends a reliable provisional Response to an Invite Dialog using javax.sip.Dialog.sendReliableProvisionalResponse(Response)
  • The Stack takes care of retransmitting the provisional response with exponentially increasing intervals until a PRACK is received or the Transaction times out.
Processing Forking INVITES:

Multiple 2xx responses may arrive at the UAC for a single INVITE request due to a forking proxy. Each response is distinguished by the tag parameter in the TO header field, and each represents a distinct Dialog, with a distinct Dialog identifier. In this case the first 2xx terminates the original INVITE additional 2xx responses will be presented to the SipListener as a ResponseEvent with null Client Transaction ID but with a valid and distinct Dialog. The Listener is expected to ACK the 2xx response - otherwise the Dialog is terminated after a timeout period. Note that unless automatic dialog creation is explictly disabled, the 2xx ResponseEvent will always contain a Dialog whether or not the outgoing INVITE was sent through a ClientTransaction or statelessly via a SipProvider.
author:
   BEA Systems, NIST
version:
   1.2





Method Summary
public  RequestcreateAck(long cseq)
     Creates an ACK request for an Invite that was responded with 2xx response.
public  RequestcreatePrack(Response relResponse)
     Creates a new PRACK Request message based on a reliable provisional response received by this Dialog and the Dialog internal information.
public  ResponsecreateReliableProvisionalResponse(int statusCode)
     Creates a new reliable provisional response based on an Invite request that created this Dialog or that is now refreshing this Dialog.
public  RequestcreateRequest(String method)
     Creates a new Request message based on the dialog creating request.
public  voiddelete()
     This method will release all resources associated with this dialog that are tracked by the SipProvider.
public  ObjectgetApplicationData()
     Gets the application specific data specific to this dialog.
public  CallIdHeadergetCallId()
     Returns the Call-Id for this dialog.
public  StringgetDialogId()
     Get the dialog identifier of this dialog.
public  TransactiongetFirstTransaction()
     This method retrieves the transaction which resulted in the creation of this Dialog.
public  AddressgetLocalParty()
     Returns the Address identifying the local party.
public  longgetLocalSeqNumber()
     The local sequence number is used to order requests from this User Agent Client to its peer User Agent Server.
public  intgetLocalSequenceNumber()
     The local sequence number is used to order requests from this User Agent Client to its peer User Agent Server.
public  StringgetLocalTag()
     Get the Local Tag of this Dialog.
public  AddressgetRemoteParty()
     Returns the Address identifying the remote party.
public  longgetRemoteSeqNumber()
     The remote sequence number is used to order requests from its peer User Agent Client to this User Agent Server.
public  intgetRemoteSequenceNumber()
     The remote sequence number is used to order requests from its peer User Agent Client to this User Agent Server.
public  StringgetRemoteTag()
     Gets the Remote Tag of this Dialog.
public  AddressgetRemoteTarget()
     Returns the Address identifying the remote target.
public  IteratorgetRouteSet()
     When acting as an User Agent Server the routeset 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.
public  DialogStategetState()
     Returns the current DialogState of the dialog or null.
public  voidincrementLocalSequenceNumber()
     This method may be used to increment the local sequence number of the dialog when an application wishes to switch from dialog stateful mode to transaction stateful mode for client transactions and back again to dialog stateful mode.
public  booleanisSecure()
     Returns true if this Dialog is secure, for example if the request was sent over a "sips:" scheme, or a "sip:" scheme over TLS.
public  booleanisServer()
     Returns whether this Dialog is a server dialog, for example this side was initially acting as a UAS.
public  voidsendAck(Request ackRequest)
     Sends ACK Request to the remote party of this dialog.
public  voidsendReliableProvisionalResponse(Response relResponse)
     Sends a reliable provisional response to the remote party of this dialog. When an application wishes to send a reliable provisional response on the Invite transaction that created this dialog or that is now refreshing this dialog, it creates a reliable provisional response message with Dialog.createReliableProvisionalResponse(int) .
public  voidsendRequest(ClientTransaction clientTransaction)
     Sends a Request to the remote party of this dialog.
public  voidsetApplicationData(Object applicationData)
     Sets application specific data to this dialog.
public  voidterminateOnBye(boolean terminateFlag)
     Terminate Dialog on BYE.



Method Detail
createAck
public Request createAck(long cseq) throws InvalidArgumentException, SipException(Code)
Creates an ACK request for an Invite that was responded with 2xx response. The cseq number for the invite is supplied to relate the ACK to its original invite request.
Parameters:
  cseq - -the CSeq number to be placed in the ACK request. The newly created ACK request message.
throws:
  InvalidArgumentException - if there is a problem with the supplied cseq ( for example <=0 ).
throws:
  SipException - if the cseq does not relate to a previously sent INVITE or ifthe Method that created the Dialog is not an INVITE ( forexample SUBSCRIBE)
since:
   1.2



createPrack
public Request createPrack(Response relResponse) throws DialogDoesNotExistException, SipException(Code)
Creates a new PRACK Request message based on a reliable provisional response received by this Dialog and the Dialog internal information. The returned Request will be correctly formatted that is the Dialog implementation is responsible for assigning the following:
  • RequestURI
  • FromHeader
  • ToHeader
  • CallIdHeader
  • RouteHeaders
  • RAckHeader
The CSeqHeader will be set when the message is sent. If this method returns a CSeqHeader in the Request it may be overwritten again by the Dialog.sendRequest(ClientTransaction) method. Therefore any Request created by this method must be sent via the Dialog.sendRequest(ClientTransaction) method and not via its ClientTransaction.sendRequest method.

All other headers including any Authentication related headers, and record route headers should be assigned by the application to the generated request. The assignment of the topmost via header for the outgoing request may be deferred until the application creates a ClientTransaction to send the request out. This method does not increment the dialog sequence number.
Parameters:
  relResponse - the reliable provisional response that should result in aprack reques. the newly created Request message on this Dialog.
throws:
  SipException - if the Method of the transaction that created the Dialog orRefeshing the Dialog is not an INVITE ( for exampleSUBSCRIBE).
throws:
  DialogDoesNotExistException - if the Dialog is not yet established (i.e. dialog stateequals null) or is terminated.
since:
   1.2




createReliableProvisionalResponse
public Response createReliableProvisionalResponse(int statusCode) throws InvalidArgumentException, SipException(Code)
Creates a new reliable provisional response based on an Invite request that created this Dialog or that is now refreshing this Dialog. This new Response does not contain a body. Only the required headers are copied from the Request. The response will include also the following headers:
  • RequireHeader
  • RSeqHeader
The RequireHeader will include the 100rel option tag. The Dialog will handle the RSeq count that will be updated and icreased if needed when the reliable provisional response is sent. Any Response created by this method must be sent via the Dialog.sendReliableProvisionalResponse(Response) method.


since:
   1.2
Parameters:
  statusCode - the new integer of the statusCode value of this Message. the newly created Response object.
throws:
  InvalidArgumentException - when an invalid status code or request method is supplied.
throws:
  SipException - when the Dialog is not a server dialog or if thismethod is called after a final response is sent to theServerTransactin that created the Dialog.




createRequest
public Request createRequest(String method) throws SipException(Code)
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 the Dialog implementation is responsible for assigning the following:
  • RequestURI
  • FromHeader
  • ToHeader
  • CallIdHeader
  • RouteHeaders
The CSeqHeader will be set when the message is sent. If this method returns a CSeqHeader in the Request it may be overwritten again by the Dialog.sendRequest(ClientTransaction) method. Therefore any Request created by this method must be sent via the Dialog.sendRequest(ClientTransaction) method and not via its ClientTransaction.sendRequest method.

All other headers including any Authentication related headers, and record route headers should be assigned by the application to the generated request. The assignment of the topmost via header for the outgoing request may be deferred until the application creates a ClientTransaction to send the request out. This method does not increment the dialog sequence number. This method may not be used for creating PRACK or ACK. Implementations should throw SipException if this method is called for creating ACK or PRACK.
Parameters:
  method - the string value that determines if the request to be created. the newly created Request message on this Dialog.
throws:
  SipException - if the Dialog is not yet established (i.e. dialog stateequals null) or is terminated or if the method is invoked forACK or PRACK.




delete
public void delete()(Code)
This method will release all resources associated with this dialog that are tracked by the SipProvider. Further references to the dialog by incoming messages will result in a mismatch. This delete method is provided methods that do not expect a BYE to terminate a dialog. Such is the case with SUBSCRIBE/NOTIFY within a Dialog that is created with an INIVTE.



getApplicationData
public Object getApplicationData()(Code)
Gets the application specific data specific to this dialog. This specification does not define the format of this application specific data. This is the responsibility of the application. the object representation of the application specific data.



getCallId
public CallIdHeader getCallId()(Code)
Returns the Call-Id for this dialog. This is the value of the Call-Id header for all messages belonging to this session. the Call-Id for this dialog



getDialogId
public String getDialogId()(Code)
Get the dialog identifier of this dialog. A dialog Id is associated with all responses and with any request that contains a tag in the To field. The rules for computing the dialog Id of a message depends on whether the SIP element is a User Agent Client or User Agent Server and applies to both requests and responses.
  • User Agent Client - the Call-Id value of the dialog Id is set to the Call-Id of the message, the remote tag is set to the tag in the To field of the message, and the local tag is set to the tag in the From field of the message.
  • User Agent Server - the Call-Id value of the dialog Id is set to the Call-Id of the message, the remote tag is set to the tag in the From field of the message, and the local tag is set to the tag in the To field of the message.
the string identifier for this dialog.



getFirstTransaction
public Transaction getFirstTransaction()(Code)
This method retrieves the transaction which resulted in the creation of this Dialog. The transaction type either server or client can be determined based on whether this is a server or client Dialog, see Dialog.isServer . the Transaction that created the Dialog.



getLocalParty
public Address getLocalParty()(Code)
Returns the Address identifying the local party. This is the value of the From header of locally initiated requests in this dialog when acting as an User Agent Client.

This is the value of the To header of received responses in this dialog when acting as an User Agent Server. the address object of the local party.




getLocalSeqNumber
public long getLocalSeqNumber()(Code)
The local sequence number is used to order requests from this User Agent Client to its peer User Agent Server. The local sequence number MUST be set to the value of the sequence number in the CSeq header field of the request. The remote sequence number MUST be empty as it is established when the remote User Agent sends a request within the dialog.

Requests within a dialog MUST contain strictly monotonically increasing and contiguous CSeq sequence numbers (increasing-by-one) in each direction (excepting ACK and CANCEL, whose numbers equal the requests being acknowledged or cancelled). Therefore, if the local sequence number is not empty, the value of the local sequence number MUST be incremented by one, and this value MUST be placed into the CSeq header field. If the local sequence number is empty, an initial value MUST be chosen. the value of the local sequence number, returns zero ifnot set.
since:
   v1.2




getLocalSequenceNumber
public int getLocalSequenceNumber()(Code)
The local sequence number is used to order requests from this User Agent Client to its peer User Agent Server. The local sequence number MUST be set to the value of the sequence number in the CSeq header field of the request. The remote sequence number MUST be empty as it is established when the remote User Agent sends a request within the dialog.

Requests within a dialog MUST contain strictly monotonically increasing and contiguous CSeq sequence numbers (increasing-by-one) in each direction (excepting ACK and CANCEL, whose numbers equal the requests being acknowledged or cancelled). Therefore, if the local sequence number is not empty, the value of the local sequence number MUST be incremented by one, and this value MUST be placed into the CSeq header field. If the local sequence number is empty, an initial value MUST be chosen. Dialog.getLocalSeqNumber()
See Also:   Dialog.getLocalSeqNumber() the integer value of the local sequence number, returns zero ifnot set.




getLocalTag
public String getLocalTag()(Code)
Get the Local Tag of this Dialog. On the client side, this tag is assigned to outgoing From headers for Requests within the dialog and To headers for responses within the dialog. On the server side, this tag is associated with outgoing To headers for responses within the dialog.



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

This is the value of the From header of recieved responses in this dialog when acting as an User Agent Server. the address object of the remote party.




getRemoteSeqNumber
public long getRemoteSeqNumber()(Code)
The remote sequence number is used to order requests from its peer User Agent Client to this User Agent Server. When acting an User Agent Server the remote sequence number MUST be set to the value of the sequence number in the CSeq header field of the request from the User Agent Client. The local sequence number MUST be empty.

If the remote sequence number is empty, it MUST be set to the value of the sequence number in the CSeq header field value in the request. If the remote sequence number was not empty, but the sequence number of the request is lower than the remote sequence number, the request is out of order and MUST be rejected with a 500 (Server Internal Error) response. If the remote sequence number was not empty, and the sequence number of the request is greater than the remote sequence number, the request is in order. the value of the remote sequence number, return zero ifnot set.
since:
   v1.2




getRemoteSequenceNumber
public int getRemoteSequenceNumber()(Code)
The remote sequence number is used to order requests from its peer User Agent Client to this User Agent Server. When acting an User Agent Server the remote sequence number MUST be set to the value of the sequence number in the CSeq header field of the request from the User Agent Client. The local sequence number MUST be empty.

If the remote sequence number is empty, it MUST be set to the value of the sequence number in the CSeq header field value in the request. If the remote sequence number was not empty, but the sequence number of the request is lower than the remote sequence number, the request is out of order and MUST be rejected with a 500 (Server Internal Error) response. If the remote sequence number was not empty, and the sequence number of the request is greater than the remote sequence number, the request is in order. Dialog.getRemoteSeqNumber()
See Also:   Dialog.getRemoteSeqNumber() the integer value of the remote sequence number, return zero ifnot set.




getRemoteTag
public String getRemoteTag()(Code)
Gets the Remote Tag of this Dialog. On the client side, this tag is associated with outgoing To headers for Requests within the dialog. On the server side, this tag is associated with incoming From headers for requests within the dialog.



getRemoteTarget
public Address getRemoteTarget()(Code)
Returns the Address identifying the remote target. This is the value of the Contact header of received Responses for target refresh Requests in this dialog when acting as an User Agent Client.

This is the value of the Contact header of received target refresh Requests Requests in this dialog when acting as an User Agent Server. the address object of the remote target.




getRouteSet
public Iterator getRouteSet()(Code)
When acting as an User Agent Server the routeset 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. an Iterator over a list of route headers to be used forforwarding.




getState
public DialogState getState()(Code)
Returns the current DialogState of the dialog or null. A dialog that is created but not yet mapped to any state must return null, multiple requests can be generated on the Dialog in a null state. The dialog states for INVITE transaction are:
  • Early - A dialog is in the "early" state, which occurs when it is created when a provisional response is recieved to the INVITE Request.
  • Confirmed - A dialog transitions to the "confirmed" state when a 2xx final response is received to the INVITE Request.
  • Terminated - A dialog transitions to the "terminated" state for all other reasons or if no response arrives at all on the dialog.
A Subscibe/Refer dialog has the following states:
  • Null - refers to a state that is not terminated.
  • Terminated - when the Application deletes the Dialog or if no response arrives at all.
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 is also "terminated". a DialogState determining the current state of the dialog.
See Also:   DialogState



incrementLocalSequenceNumber
public void incrementLocalSequenceNumber()(Code)
This method may be used to increment the local sequence number of the dialog when an application wishes to switch from dialog stateful mode to transaction stateful mode for client transactions and back again to dialog stateful mode. Note, the Dialog layer automatically increments the local sequence number when a request is sent out via the Dialog. However in special circumstances applications may wish to send a request (from a sequence of dialog requests) outside of the Dialog using the ClientTransaction.sendRequest method. When sending a request using the Transaction the Dialog state is unaffected.



isSecure
public boolean isSecure()(Code)
Returns true if this Dialog is secure, for example if the request was sent over a "sips:" scheme, or a "sip:" scheme over TLS. true if this dialog was secure, andfalse otherwise.



isServer
public boolean isServer()(Code)
Returns whether this Dialog is a server dialog, for example this side was initially acting as a UAS. true if this is a server dialog andfalse if it is a client dialog.



sendAck
public void sendAck(Request ackRequest) throws SipException(Code)
Sends ACK Request to the remote party of this dialog. This method implies that the application is functioning as User Agent Client hence the underlying SipProvider acts statefully. This method does not increment the local sequence number.
Parameters:
  ackRequest - -the new ACK Request message to send.
throws:
  SipException - if implementation cannot send the ACK Request for any reason



sendReliableProvisionalResponse
public void sendReliableProvisionalResponse(Response relResponse) throws SipException(Code)
Sends a reliable provisional response to the remote party of this dialog. When an application wishes to send a reliable provisional response on the Invite transaction that created this dialog or that is now refreshing this dialog, it creates a reliable provisional response message with Dialog.createReliableProvisionalResponse(int) . This Response is passed to this method that sends it. This method will update the RSeq header of the response if needed and will increase the RSeq count of the Transaction. The application will not be able to send further reliable provisional responses for this Dialog until PRACK is received for a previously sent provisional response. The only response that can be sent in parallel with an active reliable Provisional Response is a final response. The Final response will stop retransmission of the reliable responses.


since:
   1.2
Parameters:
  relResponse - -the reliable provisional response
throws:
  SipException - if implementation cannot send the Request for any reason(e.g. because another reliable response is still pending).




sendRequest
public void sendRequest(ClientTransaction clientTransaction) throws TransactionDoesNotExistException, SipException(Code)
Sends a Request to the remote party of this dialog. When an application wishes to send a Request message on this dialog, it creates a Request and creates a new ClientTransaction to handle this request from SipProvider.getNewClientTransaction(Request) . This ClientTransaction is passed to this method to send the request. The Request message gets sent via the ListeningPoint information of the SipProvider that is associated to this ClientTransaction.

This method implies that the application is functioning as UAC hence the underlying SipProvider acts statefully. This method is useful for sending Bye's to terminate a dialog or Re-Invites/Refers on the Dialog for third party call control, call hold etc.

This method will set the From and the To tags for the outgoing request. This method increments the dialog sequence number and sets the correct sequence number to the outgoing Request and associates the client transaction with this dialog. Note that any tags assigned by the user will be over-written by this method. If the caller sets no RouteHeader in the Request to be sent out, the implementation of this method will add the RouteHeader from the routes that are mantained in the dialog. If the caller sets the RouteHeader's, the implementation will leave the route headers unaltered. This allows the application to manage its own route set if so desired.

The User Agent traditionally 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.

A Dialog may be created by an INVITE request and subsequently SUBSCRIBE/NOTIFY are sent withing that Dialog. In this case the application may call Dialog.terminateOnBye to prevent the Dialog from Terminating upon reciept of a BYE.
Parameters:
  clientTransaction - -the new ClientTransaction object identifying this transaction,this clientTransaction should be requested fromSipProvider.getNewClientTransaction(Request)
throws:
  TransactionDoesNotExistException - if the clientTransaction does not correspond to any existingclient transaction.
throws:
  SipException - if implementation cannot send the Request for any reason.




setApplicationData
public void setApplicationData(Object applicationData)(Code)
Sets application specific data to this dialog. This specification does not define the format of this data. This is the responsibility of the application and is dependent upon the application. This method can be used to link the call state of this dialog to other state, SIP or otherwise in the system. For example this method could be used by a SIP-to-H323 interworking node that would associate the H323 call state associated with a call on the H323 side with this dialog that represents this call on the SIP side. Or a dialog stateful proxy can associate the UAS dialog to the UAC dialog and vice versa.
Parameters:
  applicationData - the new object containing application specific data.



terminateOnBye
public void terminateOnBye(boolean terminateFlag) throws SipException(Code)
Terminate Dialog on BYE. If this flag is set to true then the stack will Terminate the dialog automatically when BYE is received. This is the default behavior. This method is useful for SUBSCRIBE/NOTIFY processing within a Dialog. In the case that several subscriptions are associated with a single Dialog, the Dialog does not terminate until all the subscriptions in it are destroyed. Hence, if the application is aware of active subscriptions in a dialog it should set this flag to false. In this case when BYE is received the dialog will not be terminated and it will be the application’s responsibility to call the Dialog.delete function when all active subscriptions are terminated.
Parameters:
  terminateFlag - --if true then the dialog is terminated when a BYE is received.
throws:
  SipException - --if the dialog is already terminated.
since:
   1.2



www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.