private void sendRequest(final SipRequestVerb verb, final Request request) { Thread transactionHandler = new Thread() { public void run() { try { // Create the client transaction // TODO put this in Connection class sipConnection.setClientTransaction( sipConnection.getProvider().getNewClientTransaction(request)); final ClientTransaction clientTransaction = sipConnection.getClientTransaction(); // and send the request if (SipRequestVerb.REGISTER == verb || SipRequestVerb.INVITE == verb || SipRequestVerb.MESSAGE == verb || SipRequestVerb.CANCEL == verb) { clientTransaction.sendRequest(); } else if (SipRequestVerb.BYE == verb) { sipConnection.getCurrentDialog().sendRequest(clientTransaction); } else if (SipRequestVerb.ACK == verb) { sipConnection.getCurrentDialog().sendAck(request); } } catch (Exception e) { e.printStackTrace(); } } }; transactionHandler.start(); if (SipRequestVerb.INVITE == verb || SipRequestVerb.MESSAGE == verb) { sipConnection.setCurrentDialog(sipConnection.getClientTransaction().getDialog()); } }
public boolean sendCancel(final SipRequestState state) { try { // create Request from dialog Request request = sipConnection.getClientTransaction().createCancel(); if (null != stateMachine && stateMachine.canRequestBeSent(SipRequestVerb.CANCEL, request)) { sendRequest(SipRequestVerb.CANCEL, request); return true; } } catch (Exception e) { e.printStackTrace(); } return false; }