/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 1.3.39
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package org.doubango.tinyWRAP;

public class SipStack extends SafeObject {
  private long swigCPtr;

  protected SipStack(long cPtr, boolean cMemoryOwn) {
    super(tinyWRAPJNI.SWIGSipStackUpcast(cPtr), cMemoryOwn);
    swigCPtr = cPtr;
  }

  protected static long getCPtr(SipStack obj) {
    return (obj == null) ? 0 : obj.swigCPtr;
  }

  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if(swigCPtr != 0 && swigCMemOwn) {
      swigCMemOwn = false;
      tinyWRAPJNI.delete_SipStack(swigCPtr);
    }
    swigCPtr = 0;
    super.delete();
  }

  public SipStack(SipCallback callback, String realm_uri, String impi_uri, String impu_uri) {
    this(tinyWRAPJNI.new_SipStack(SipCallback.getCPtr(callback), callback, realm_uri, impi_uri, impu_uri), true);
  }

  public boolean start() {
    return tinyWRAPJNI.SipStack_start(swigCPtr, this);
  }

  public boolean setDebugCallback(SipDebugCallback callback) {
    return tinyWRAPJNI.SipStack_setDebugCallback(swigCPtr, this, SipDebugCallback.getCPtr(callback), callback);
  }

  public boolean setRealm(String realm_uri) {
    return tinyWRAPJNI.SipStack_setRealm(swigCPtr, this, realm_uri);
  }

  public boolean setIMPI(String impi) {
    return tinyWRAPJNI.SipStack_setIMPI(swigCPtr, this, impi);
  }

  public boolean setIMPU(String impu_uri) {
    return tinyWRAPJNI.SipStack_setIMPU(swigCPtr, this, impu_uri);
  }

  public boolean setPassword(String password) {
    return tinyWRAPJNI.SipStack_setPassword(swigCPtr, this, password);
  }

  public boolean setProxyCSCF(String fqdn, long port, String transport, String ipversion) {
    return tinyWRAPJNI.SipStack_setProxyCSCF(swigCPtr, this, fqdn, port, transport, ipversion);
  }

  public boolean setLocalIP(String ip) {
    return tinyWRAPJNI.SipStack_setLocalIP(swigCPtr, this, ip);
  }

  public boolean setLocalPort(long port) {
    return tinyWRAPJNI.SipStack_setLocalPort(swigCPtr, this, port);
  }

  public boolean setEarlyIMS(boolean enabled) {
    return tinyWRAPJNI.SipStack_setEarlyIMS(swigCPtr, this, enabled);
  }

  public boolean addHeader(String name, String value) {
    return tinyWRAPJNI.SipStack_addHeader(swigCPtr, this, name, value);
  }

  public boolean removeHeader(String name) {
    return tinyWRAPJNI.SipStack_removeHeader(swigCPtr, this, name);
  }

  public boolean addDnsServer(String ip) {
    return tinyWRAPJNI.SipStack_addDnsServer(swigCPtr, this, ip);
  }

  public boolean isValid() {
    return tinyWRAPJNI.SipStack_isValid(swigCPtr, this);
  }

  public boolean stop() {
    return tinyWRAPJNI.SipStack_stop(swigCPtr, this);
  }

}
