Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package performance.b2bua;
  
  
 import java.util.Set;
 
 
 public class TestCall {
 	
 	private String localTag;
 	
 	private Dialog incomingDialog;
 	private Dialog outgoingDialog;
 	
 	public TestCall(String localTagSipProvider sipProviderHeaderFactory headerFactoryMessageFactory messageFactory) {
 		this. = localTag;
 		this. = sipProvider;
 		this. = messageFactory;
 		this. = headerFactory;
 	}

Returns:
the incomingDialog
 
 	public Dialog getIncomingDialog() {
 		return ;
 	}

Returns:
the outgoingDialog
 
 	public Dialog getOutgoingDialog() {
 		return ;
 	}
 	
 	public void processInvite(RequestEvent requestEvent) {
 		//System.out.println("Got invite: "+requestEvent.getRequest());
 		try {
 			if ( == null) {
 				try {
 				}
 				catch (Exception e) {
 					return;
 				}
 			}
 			//serverTransaction.sendResponse(messageFactory.createResponse(100, requestEvent.getRequest()));
 		} catch (Exception ex) {
 		}
 	}

Parameters:
serverTransaction2
Returns:
Throws:
javax.sip.SipException
	private void setupIncomingDialog() throws SipException {
	}

Parameters:
incomingDialog2
Returns:
Throws:
javax.sip.SipException
	private void forwardInvite() throws SipException {
	}
	@SuppressWarnings("unchecked")
	private Request createRequest(Request origRequestthrows SipException {
		final SIPRequest request = (SIPRequestorigRequest.clone();
		try {
catch (ParseException e1) {
			throw new SipException("failed to set local tag"e1);
		}
		final String transport = request.getTopmostViaHeader().getTransport();
		final ListeningPointImpl listeningPointImpl = (ListeningPointImpl.getListeningPoint(transport);
		final ViaList viaList = new ViaList();
		viaList.add((VialisteningPointImpl.createViaHeader());
		request.setVia(viaList);
		try {
catch (InvalidArgumentException e) {
			throw new SipException("Failed to create max forwards header",e);
		}
		// note: cseq will be set by dialog when sending
		// set contact if the original response had it
		if (origRequest.getHeader(.) != null) {
			request.setHeader(listeningPointImpl.createContactHeader());
		}
		/*
		 * Route header fields of the upstream request MAY be copied in the
		 * downstream request, except the topmost Route header if it is under
		 * the responsibility of the B2BUA. Additional Route header fields MAY
		 * also be added to the downstream request.
		 */
		if ( == null || .getState() == null) {
			// first request, no route available
			final RouteList routeList = request.getRouteHeaders();
			if (routeList != null) {
				final RouteHeader topRoute = routeList.get(0);
				final URI topRouteURI = topRoute.getAddress().getURI();
				if (topRouteURI.isSipURI()) {
					final SipURI topRouteSipURI = (SipURItopRouteURI;
					if (topRouteSipURI.getHost().equals(listeningPointImpl.getIPAddress())
							&& topRouteSipURI.getPort() == listeningPointImpl.getPort()) {
						if (routeList.size() > 1) {
							routeList.remove(0);
						}
						else {
						}					
					}
				}
			}			
		}
		else {
			// replace route in orig request with the one in dialog
			final RouteList routeList = new RouteList();
			for (Iterator<Routeit = .getRouteSet(); it.hasNext();) {
				Route route = it.next();				
				routeList.add(route);								
			}
			if (!routeList.isEmpty()) {
				request.addHeader(routeList);
			}
		}
		/*
		 * Record-Route header fields of the upstream request are not copied in
		 * the new downstream request, as Record-Route is only meaningful for
		 * the upstream dialog.
		 */
		return request;		
	}
	public void processAck(RequestEvent requestEvent) {
		// ignore
	}
	public void processBye(RequestEvent requestEvent) {
		try {
			final Request request = createRequest(requestEvent.getRequest());
		}
		catch (Exception e) {
		}
	}
	public void process180(ResponseEvent responseEvent) {
		try {
			forwardResponse(responseEvent.getResponse());
		}
		catch (Exception e) {
		}
	}

Parameters:
responseEvent
Throws:
javax.sip.InvalidArgumentException
	@SuppressWarnings("unchecked")
	private void forwardResponse(Response receivedResponsethrows SipExceptionInvalidArgumentException {
		final ServerTransaction origServerTransaction = this.;	
		Response forgedResponse = null;
		try {
			forgedResponse = .createResponse(receivedResponse.getStatusCode(), origServerTransaction.getRequest());
catch (ParseException e) {
			throw new SipException("Failed to forge message"e);
		}
		final DialogState dialogState = .getState();
		if ((dialogState == null || dialogState == .) &&  != null && .isServer()) {
			// no tag set in the response, since the dialog creating transaction didn't had it
			try {
catch (ParseException e) {
				throw new SipException("Failed to set local tag"e);
			}
		}
		// copy headers 
		ListIterator<Stringlit = receivedResponse.getHeaderNames();
		String headerName = null;
		ListIterator<HeaderheadersIterator = null;
		while (lit.hasNext()) {
			headerName = lit.next();
			if (TestCall.getHeadersToOmmitOnResponseCopy().contains(headerName)) {
				continue;
else {
				forgedResponse.removeHeader(headerName);
				headersIterator = receivedResponse.getHeaders(headerName);
				while (headersIterator.hasNext()) {
					forgedResponse.addLast((Header)headersIterator.next().clone());
				}
			}
		}
		// Copy content
		final byte[] rawOriginal = receivedResponse.getRawContent();
		if (rawOriginal != null && rawOriginal.length != 0) {
			final byte[] copy = new byte[rawOriginal.length];
			System.arraycopy(rawOriginal, 0, copy, 0, copy.length);
			try {
				forgedResponse.setContent(copy, (ContentTypeHeaderforgedResponse
catch (ParseException e) {
				throw new SipException("Failed to copy content.",e);
			}
		}
		// set contact if the received response had it
		if (receivedResponse.getHeader(.) != null) {
			final String transport = ((ViaHeaderforgedResponse.getHeader(.)).getTransport();
		}
		origServerTransaction.sendResponse(forgedResponse);
	}
	public void process200(ResponseEvent responseEvent) {
		try {
			final CSeqHeader cSeqHeader = (CSeqHeaderresponseEvent.getResponse().getHeader(.); 			
			if (cSeqHeader.getMethod().equals(.)) {
				processInvite200(responseEvent,cSeqHeader);
			}
			else if (cSeqHeader.getMethod().equals(.)) {
				processBye200(responseEvent);
			}
			else {
				..println("Unexpected response: "+responseEvent.getResponse());
			}
catch (Exception ex) {
		}
	}

	private void processInvite200(ResponseEvent responseEvent,CSeqHeader cseqthrows InvalidArgumentExceptionSipException {
		// lets ack it ourselves to avoid UAS retransmissions due to
		// forwarding of this response and further UAC Ack
		// note that the app does not handles UAC ACKs
		final Request ack = responseEvent.getDialog().createAck(cseq.getSeqNumber());
		responseEvent.getDialog().sendAck(ack);
		forwardResponse(responseEvent.getResponse());			
	}

Parameters:
responseEvent
	private void processBye200(ResponseEvent responseEvent) {
		// nothing to do
	}
			final Set<Stringset = new HashSet<String>();
		}
	}
New to GrepCode? Check out our FAQ X