Esempio n. 1
0
  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());
    }
  }
Esempio n. 2
0
  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;
  }