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

org.restcomm.protocols.ss7.inap.api.INAPDialog Maven / Gradle / Ivy

The newest version!
/*
 * Mobius Software LTD
 * Copyright 2019, Mobius Software LTD and individual contributors
 * by the @authors tag.
 *
 * This program is free software: you can redistribute it and/or modify
 * under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation; either version 3 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see 
 */
package org.restcomm.protocols.ss7.inap.api;

import java.io.Externalizable;
import java.io.Serializable;

import org.restcomm.protocols.ss7.inap.api.dialog.INAPDialogState;
import org.restcomm.protocols.ss7.inap.api.dialog.INAPUserAbortReason;
import org.restcomm.protocols.ss7.inap.api.errors.INAPErrorMessage;
import org.restcomm.protocols.ss7.sccp.parameter.SccpAddress;
import org.restcomm.protocols.ss7.tcap.api.MessageType;
import org.restcomm.protocols.ss7.tcap.api.tc.component.InvokeClass;
import org.restcomm.protocols.ss7.tcap.api.tc.dialog.Dialog;
import org.restcomm.protocols.ss7.tcap.asn.comp.Problem;

import com.mobius.software.telco.protocols.ss7.asn.exceptions.ASNParsingException;
/**
 * @author yulian.oifa
 *
 */
public interface INAPDialog extends Serializable {
   int _Timer_Default = -1;

   // Invoke timers
   int getTimerCircuitSwitchedCallControlShort();
   int getTimerCircuitSwitchedCallControlMedium();
   int getTimerCircuitSwitchedCallControlLong();
   
   /*
   * Setting this property to true lead that all sent to TCAP messages of this Dialog will be marked as "ReturnMessageOnError"
   * (SCCP will return the notification is the message has non been delivered to the peer)
   */
   void setReturnMessageOnError(boolean val);

   boolean getReturnMessageOnError();

   SccpAddress getLocalAddress();

   /**
   * Sets local Sccp Address.
   *
   * @param localAddress
   */
   void setLocalAddress(SccpAddress localAddress);

   SccpAddress getRemoteAddress();

   /**
   * Sets remote Sccp Address
   *
   * @param remoteAddress
   */
   void setRemoteAddress(SccpAddress remoteAddress);

   /**
   * This method can be called on timeout of dialog, inside {@link INAPDialogListener#onDialogTimeout(Dialog)} callback. If its
   * called, dialog wont be removed in case application does not perform 'send'.
   */
   void keepAlive();

   /**
   * Returns this Dialog's ID. This ID is actually TCAP's Dialog ID.
   * {@link org.restcomm.protocols.ss7.tcap.api.tc.dialog.Dialog}
   *
   * @return
   */
   Long getLocalDialogId();

   /**
   * Returns this Dialog's remote ID. This ID is actually TCAP's remote Dialog ID.
   * {@link org.restcomm.protocols.ss7.tcap.api.tc.dialog.Dialog}
   *
   * @return
   */
   Long getRemoteDialogId();

   /**
   * Returns the INAP service that serve this dialog
   *
   * @return
   */
   INAPServiceBase getService();

   INAPDialogState getState();

   /**
   * Returns the type of the last incoming TCAP primitive (TC-BEGIN, TC-CONTINUE, TC-END or TC-ABORT) It will be equal null if
   * we have just created a Dialog and no messages has income
   *
   * @return
   */
   MessageType getTCAPMessageType();

   /**
    * @return NetworkId to which virtual network Dialog belongs to
    */
   int getNetworkId();

   /**
    * @param networkId
    *            NetworkId to which virtual network Dialog belongs to
    */
   void setNetworkId(int networkId);

   void release();

   /**
   * Sends TB-BEGIN, TC-CONTINUE depends on dialogue state including primitives
   */
   void send() throws INAPException;

   /**
   * This service is used for releasing a previously established INAP dialogue. Sends TC-CLOSE
   *
   * @param prearrangedEnd If prearrangedEnd is false, all the Service Primitive added to INAPDialog and not sent yet, will be
   *        sent to peer. If prearrangedEnd is true, all the Service Primitive added to INAPDialog and not sent yet, will not
   *        be sent to peer.
   */
   void close(boolean prearrangedEnd) throws INAPException;

   /**
   * This method makes the same as send() method. But when invoking it from events of parsing incoming components real sending
   * will occur only when all incoming components events and onDialogDelimiter() or onDialogClose() would be processed
   *
   * If you are receiving several primitives you can invoke sendDelayed() in several processing components events - the result
   * will be sent after onDialogDelimiter() in a single TC-CONTINUE message
   */
   void sendDelayed() throws INAPException;

   /**
   * This method makes the same as close() method. But when invoking it from events of parsing incoming components real
   * sending and dialog closing will occur only when all incoming components events and onDialogDelimiter() or onDialogClose()
   * would be processed
   *
   * If you are receiving several primitives you can invoke closeDelayed() in several processing components events - the
   * result will be sent and the dialog will be closed after onDialogDelimiter() in a single TC-END message
   *
   * If both of sendDelayed() and closeDelayed() have been invoked TC-END will be issued and the dialog will be closed If
   * sendDelayed() or closeDelayed() were invoked, TC-CONTINUE/TC-END were not sent and abort() or release() are invoked - no
   * TC-CONTINUE/TC-END messages will be sent
   */
   void closeDelayed(boolean prearrangedEnd) throws INAPException;

   /**
   * Sends TC_U_ABORT Service Request with an abort reason.
   *
   * @param abortReason optional - may be null
   */
   void abort(INAPUserAbortReason abortReason) throws INAPException;

   /**
   * If a INAP user will not answer to an incoming Invoke with Response, Error or Reject components it should invoke this
   * method to remove the incoming Invoke from a pending incoming Invokes list
   *
   * @param invokeId
   */
   void processInvokeWithoutAnswer(Integer invokeId);

   /**
    * Sends the TC-INVOKE,TC-RESULT or TC-RESULT-L component
    *
    * @param invoke
    * @throws INAPException
    */
   public Integer sendDataComponent(Integer invokeId,Integer linkedId,InvokeClass invokeClass,Long customTimeout,Integer operationCode,INAPMessage param,Boolean isRequest,Boolean isLastResponse) throws INAPException;

   /**
    * Sends the TC-U-ERROR component
    *
    * @param invokeId
    * @param mapErrorMessage
    * @throws INAPException
    */
   public void sendErrorComponent(Integer invokeId, INAPErrorMessage mem) throws INAPException;

   /**
    * Sends the TC-U-REJECT component
    *
    * @param invokeId This parameter is optional and may be the null
    * @param problem
    * @throws ASNParsingException
    */
   public void sendRejectComponent(Integer invokeId, Problem problem) throws INAPException;

   /**
    * Reset the Invoke Timeout timer for the Invoke. (TC-TIMER-RESET)
    *
    * @param invokeId
    * @throws INAPException
    */
   void resetInvokeTimer(Integer invokeId) throws INAPException;

   /**
    * Causes local termination of an operation invocation (TC-U-CANCEL)
    *
    * @param invokeId
    * @return true:OK, false: Invoke not found
    * @throws INAPException
    */
   boolean cancelInvocation(Integer invokeId) throws INAPException;

   /**
    * Getting from the INAPDialog a user-defined object to save relating to the Dialog information
    *
    * @return
    */
   Externalizable getUserObject();

   /**
    * Store in the INAPDialog a user-defined object to save relating to the Dialog information
    *
    * @param userObject
    */
   	void setUserObject(Externalizable userObject);

   INAPApplicationContext getApplicationContext();

   /**
    * Return the maximum INAP message length (in bytes) that are allowed for this dialog
    *
    * @return
    */
   int getMaxUserDataLength();

   /**
    * Return the INAP message length (in bytes) that will be after encoding if TC-BEGIN or TC-CONTINUE cases This value must not
    * exceed getMaxUserDataLength() value
    *
    * @return
    */
   int getMessageUserDataLengthOnSend() throws INAPException;

   /**
    * Return the INAP message length (in bytes) that will be after encoding if TC-END case This value must not exceed
    * getMaxUserDataLength() value
    *
    * @param prearrangedEnd
    * @return
    */
   int getMessageUserDataLengthOnClose(boolean prearrangedEnd) throws INAPException;
   
   /**
   *
   * @return IdleTaskTimeout value in milliseconds
   */
   long getIdleTaskTimeout();

   /**
    * Set IdleTaskTimeout in milliseconds.
    *
    * @param idleTaskTimeoutMs
    */
   void setIdleTaskTimeout(long idleTaskTimeoutMs);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy