private void doCancel(final Dialog dialog) { assert TransactionUtils.isTransactionExecutionThread() : "Code run in wrong thread. Must be run in TransactionThread. Now in " + Thread.currentThread(); assert !done.get(); final InviteClntTransaction transaction = getTransactionManager().findTransaction(dialog, SIP_INVITE_CLIENT); final DialogStateEvent<BaseSipMessage> stateEvent = new DefaultDialogStateEvent<BaseSipMessage>(dialog, SessionState.SESSION_TERMINATED, null); dialogStateListenerHolder.getNotifier().onSessionTerminated(stateEvent); // dialogStateListenerHolder.getNotifier().onSessionEnded(stateEvent); // DIALOG.putCustomParameter(ParamKey.INITIAL_MESSAGE, ((Transaction) // transaction).getInitialMessage()); if (transaction != null) { transaction.cancel(); } }
public void handleIncomingCancel(Request msg) throws DialogStateException { assert !done.get(); assert msg != null && MessageType.SIP_CANCEL == MessageType.parse(msg.getMethod()); if (!done.get()) { Logger.log("Remote party has sent SIP_CANCEL"); final Dialog dialog = getStackContext().getDialogStorage().findDialogForMessage(msg); if (dialog != null) { dialog.getMessageHistory().addMessage(msg, true); final InviteSrvTransaction transaction = getTransactionManager().findTransaction(dialog, SIP_INVITE_SERVER); if (transaction != null) { final DialogStateEvent<BaseSipMessage> stateEvent = new DefaultDialogStateEvent<BaseSipMessage>( dialog, SessionState.SESSION_TERMINATED, msg); dialogStateListenerHolder.getNotifier().onSessionTerminated(stateEvent); dialogStateListenerHolder.getNotifier().onSessionEnded(stateEvent); // DIALOG.putCustomParameter(ParamKey.INITIAL_MESSAGE, ((Transaction) // transaction).getInitialMessage()); transaction.cancel(); } else { // assert false : "Transaction already terminated for msg: " + msg.shortDescription() + " // dialog: " + dialog; throw new DialogStateException( dialog, DialogStateException.Error.REQUEST_FOR_UNKNOWN_DIALOG, msg); } } else { // assert false : "Dialog is already terminated or never exist. Message :" + // msg.shortDescription(); throw new DialogStateException( dialog, DialogStateException.Error.REQUEST_FOR_UNKNOWN_DIALOG, msg); } } }
public void addIncomingCallListener( ClientIdentity identity, SDPType type, IncomingCallListener listener) { incomingCallListenerHolder.addListener(listener, identity, type); }
public void removeIncomingCallListener(final IncomingCallListener listener) { incomingCallListenerHolder.removeListener(listener); }
public void addIncomingCallListener( ClientIdentity clientIdentity, IncomingCallListener listener) { incomingCallListenerHolder.addListener(listener, clientIdentity); }
public void addIncomingCallListener(SDPType sdpType, final IncomingCallListener listener) { incomingCallListenerHolder.addListener(listener, sdpType); }
public void addIncomingCallListener(final IncomingCallListener listener) { incomingCallListenerHolder.addListener(listener); }
public void removeDialogStateListener(final DialogStateListener<BaseSipMessage> listener) { dialogStateListenerHolder.removeListener(listener); }
public void addDialogStateListener( final Dialog dialog, final DialogStateListener<BaseSipMessage> listener) { dialogStateListenerHolder.addListener(listener, dialog); }