All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sip.Transaction Maven / Gradle / Ivy

/**
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Unpublished - rights reserved under the Copyright Laws of the United States.
 * Copyright � 2003 Sun Microsystems, Inc. All rights reserved.
 * Copyright � 2005 BEA Systems, Inc. All rights reserved.
 *
 * Use is subject to license terms.
 *
 * This distribution may include materials developed by third parties. 
 *
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 *
 * Module Name   : JSIP Specification
 * File Name     : Transaction.java
 * Author        : Phelim O'Doherty
 *
 *  HISTORY
 *  Version   Date      Author              Comments
 *  1.1     08/10/2002  Phelim O'Doherty    Initial version
 *  1.2     12/15/2004  M. Ranganathan      Clarified behavior of getDialog when 
 *                      Phelim O'Doherty    AUTOMATIC_DIALOG_SUPPORT is set to off.
 *                                          Added two methods - set/getApplicationData
 *                                          Added terminate method.    
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 */
package javax.sip;

import javax.sip.Dialog;
import javax.sip.message.Request;
import java.io.Serializable;

/**
 * Transactions are a fundamental component of SIP. A transaction is a request 
 * sent by a client transaction to a server transaction, along with all 
 * responses to that request sent from the server transaction back to the client
 * transactions. User agents contain a transaction layer, as do stateful proxies. 
 * Stateless proxies do not contain a transaction layer. This specification 
 * provides the capabilities to allow either the SipProvider or SipListener to 
 * handle transactional functionality.
 * 

* This interface represents a generic transaction interface defining the methods * common between client and server transactions. * * @see TransactionState * @author BEA Systems, NIST * @version 1.2 */ public interface Transaction extends Serializable{ /** * Gets the dialog object of this transaction object. A dialog only * exists for a transaction when a session is setup between a User Agent * Client and a User Agent Server, either by a 1xx Provisional Response * for an early dialog or a 200OK Response for a committed dialog. * *

    *
  • If the stack is configured with the AUTOMATIC_DIALOG_SUPPORT property set to * ON ( default behavior ) then the following behavior is defined: *
      *
    • If the transaction is associated with an existing Dialog or could result * in a Dialog being created in the future (ie. the stack is configured * to recognize the method as a Dialog creating method or is one of the * natively supported dialog creating methods such as INVITE, SUBSCRIBE or * REFER), then the implementation must either associate the transaction * with the existing Dialog or create a Dialog with null state. *
    • If the Transaction is neither dialog creating nor can be associated with * an existing dialog, then the implementation must return null when the * application issues getDialog on the transaction. *
    *
  • If the stack is configured with AUTOMATIC_DIALOG property set to OFF * then the stack does not automatically create a Dialog for a transaction nor does * it maintain an association between dialog and transaction on behalf of the * application. Hence this method will return null. * It is the responsibility of the application to create a Dialog and associate * it with the transaction when the response is sent. *
* * @return the dialog object of this transaction object or null if no * dialog exists. * @see Dialog */ public Dialog getDialog(); /** * Returns the current state of the transaction. Returns the current * TransactionState of this Transaction or null if a ClientTransaction has * yet been used to send a message. * * @return a TransactionState object determining the current state of the * transaction. */ public TransactionState getState(); /** * Returns the current value of the retransmit timer in milliseconds used * to retransmit messages over unreliable transports for this transaction. * * @return the integer value of the retransmit timer in milliseconds. * @throws UnsupportedOperationException if this method is not supported * by the underlying implementation. */ public int getRetransmitTimer() throws UnsupportedOperationException; /** * Sets the value of the retransmit timer to the newly supplied timer value. * The retransmit timer is expressed in milliseconds and its default value * is 500ms. This method allows the application to change the transaction * retransmit behavior for different networks. For example the gateway proxy, * the internal intranet is likely to be relatively uncongested * and the endpoints will be relatively close. The external network is the * general Internet. This functionality allows different retransmit times * for either side. * * @param retransmitTimer - the new integer value of the retransmit timer * in milliseconds. * @throws UnsupportedOperationException if this method is not supported * by the underlying implementation. */ public void setRetransmitTimer(int retransmitTimer) throws UnsupportedOperationException; /** * Returns a unique branch identifer that identifies this transaction. The * branch identifier is used in the ViaHeader. The uniqueness property of * the branch ID parameter to facilitate its use as a transaction ID, was * not part of RFC 2543. The branch ID inserted by an element compliant * with the RFC3261 specification MUST always begin with the characters * "z9hG4bK". These 7 characters are used as a magic cookie, so that * servers receiving the request can determine that the branch ID was * constructed to be globally unique. The precise format of the branch * token is implementation-defined. This method should always return the * same branch identifier for the same transaction. * * @return the new branch that uniquely identifies this transaction. */ public String getBranchId(); /** * Returns the request that created this transaction. The transaction state * machine needs to keep the Request that resulted in the creation of this * transaction while the transaction is still alive. Applications also need * to access this information, e.g. a forking proxy server may wish to * retrieve the original Invite request to cancel branches of a fork when * a final Response has been received by one branch. * * @return the Request message that created this transaction. * */ public Request getRequest(); /** * This method allows applications to associate application context with * the transaction. This specification does not define the format of this * data, this the responsibility of the application and is dependent * on the application. This capability may be useful for proxy servers * to associate the transaction to some application state. The context of * this application data is un-interpreted by the stack. * * @param applicationData - un-interpreted application data. * @since v1.2 * */ public void setApplicationData (Object applicationData); /** * Returns the application data associated with the transaction.This * specification does not define the format of this application specific * data. This is the responsibility of the application. * * @return application data associated with the transaction by the application. * @since v1.2 * */ public Object getApplicationData(); /** * Terminate this transaction and immediately release all stack resources * associated with it. When a transaction is terminated using this method, * a transaction terminated event is sent to the listener. If the * transaction is already associated with a dialog, it cannot be terminated * using this method. Instead, the dialog should be deleted to remove the * transaction. * * @throws ObjectInUseException if the transaction cannot be terminated as * it is associated to a dialog. * @since v1.2 */ public void terminate() throws ObjectInUseException; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy