public void SendRequest(SipRequest request) { Check.Require(request, "request"); if (_logger.IsTraceEnabled) { _logger.Trace("Sending request..."); } var result = new SipValidator().ValidateRequest(request); if (!result.IsValid) { ThrowSipException(result); } var via = request.Vias.GetTopMost(); if (string.IsNullOrEmpty(via.Branch)) { via.Branch = SipUtil.CreateBranch(); } var bytes = SipFormatter.FormatMessage(request); SipUri sipUri = GetDestinationUri(request); IPEndPoint ipEndPoint = GetDestinationEndPoint(sipUri); SendBytes(bytes, ipEndPoint); if (_logger.IsDebugEnabled) { _logger.Debug("Send request '{0}' --> {1}. # bytes:{2}.", request.RequestLine.Method, ipEndPoint, bytes.Length); } if (_requestSentObserver != null) { _requestSentObserver.OnNext(request); } }
public SipRequest CreateRequest(SipUri requestUri, string method, SipCallIdHeader callId, SipCSeqHeader cSeq, SipFromHeader from, SipToHeader to, SipViaHeader viaHeader, SipMaxForwardsHeader maxForwards) { Check.Require(requestUri, "requestUri"); Check.Require(method, "method"); Check.Require(callId, "callId"); Check.Require(cSeq, "cseq"); Check.Require(from, "from"); Check.Require(to, "to"); Check.Require(viaHeader, "viaHeader"); Check.Require(maxForwards, "maxforwards"); var message = new SipRequest(); message.RequestLine.Method = method; message.RequestLine.Uri = requestUri; message.RequestLine.Version = SipConstants.SipTwoZeroString; message.CallId = callId; message.To = to; message.From = from; message.CSeq = cSeq; message.Vias.SetTopMost(viaHeader); message.MaxForwards = maxForwards; return(message); }