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

gov.nist.javax.sip.DialogExt Maven / Gradle / Ivy

There is a newer version: 1.3.0-91
Show newest version
package gov.nist.javax.sip;

import javax.sip.Dialog;
import javax.sip.SipProvider;

/**
 * Extensions for Next specification revision. These interfaces will remain unchanged and be
 * merged with the next revision of the spec.
 * 
 * 
 * @author mranga
 * 
 */
public interface DialogExt extends Dialog {

  /**
   * Returns the SipProvider that was used for the first transaction in this Dialog
   * 
   * @return SipProvider
   * 
   * @since 2.0
   */
  public SipProvider getSipProvider();

  /**
   * Sets a flag that indicates that this Dialog is part of a BackToBackUserAgent. If this flag
   * is set, INVITEs are not allowed to interleave and timed out ACK transmission results in a
   * BYE being sent to the other side. Setting this flag instructs the stack to automatically
   * handle dialog errors. Once this flag is set for a dialog, it cannot be changed.
   * This flag can be set on a stack-wide basis, on a per-provider basis or on a per Dialog basis.
   * This flag must only be set at the time of Dialog creation. If the flag is set after the first
   * request or response is seen by the Dialog, the behavior of this flag is undefined.
   * 
   * @since 2.0
   */
  public void setBackToBackUserAgent();

  /**
   * Turn off sequence number validation for this dialog. This passes all requests to the
   * application layer including those that arrive out of order. This is good for testing
   * purposes. Validation is delegated to the application and the stack will not attempt to
   * block requests arriving out of sequence from reaching the application. In particular, the
   * validation of CSeq and the ACK retransmission recognition are delegated to the application.
   * Your application will be responsible for error handling of these cases.
   * 
   * @since 2.0
   */
  public void disableSequenceNumberValidation();

  /**
   * retrieve the value of release references to know if the stack performs optimizations
   * on cleanup to save on memory
   * 
   * @return release references value
   * 
   * @since 2.0
   */
  public ReleaseReferencesStrategy getReleaseReferencesStrategy();

  /**
   * If set to true it will release all references that it no longer needs. This will include the
   * reference to the
   * Request, Transactions, Any unused timers etc. This will significantly reduce memory
   * consumption under high load
   * 
   * @param releaseReferences
   * 
   * @since 2.0
   */
  public void setReleaseReferencesStrategy(ReleaseReferencesStrategy releaseReferencesStrategy);

  /**
   * Sets the early dialog timeout period. Overrides the value set by the stack configuration
   * property
   * EARLY_DIALOG_TIMEOUT_SECONDS.
   * A dialog may remain in early state indefinitely. UACs may kill a dialog in early state of
   * periodic
   * provisional responses are not seen for 3 minutes. This allows you to override the RFC
   * specified value of 3 minutes hence allowing for fast fail over from unresponsive servers.
   */
  public void setEarlyDialogTimeoutSeconds(int timeoutValue);

  /**
   * True if this dialog has been created following the forking of a previous dialog.
   * This could happen by example if Alice would Invite a forking proxy whom would 180Ring Bob but
   * finally 200Ok on Carol. The original Dialog known by Alice after Bob's ringing would be overriden
   * by a new dialog bound to Carol. The original dialog can be retrieved using {@link #getOriginalDialog()}
   */
  public boolean isForked();

  /**
   * @see {@link #isForked()}
   * 
   * @return The original dialog.
   */
  public Dialog getOriginalDialog();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy