コード例 #1
0
        private SipRequest CreateRegisterRequest()
        {
            var requestUri   = AddressFactory.CreateUri(null, "registrar.ocean.com");
            var toAddressUri = AddressFactory.CreateUri("hannes", "ocean.com");
            var toAddress    = AddressFactory.CreateAddress("hannes", toAddressUri);
            var toHeader     = HeaderFactory.CreateToHeader(toAddress);
            var fromHeader   = HeaderFactory.CreateFromHeader(toAddress, SipUtil.CreateTag());
            var cseqHeader   = HeaderFactory.CreateSCeqHeader(SipMethods.Register, 1028);
            var callId       = SipUtil.CreateCallId();
            var callIdheader = HeaderFactory.CreateCallIdHeader(callId);
            var viaHeader    = HeaderFactory.CreateViaHeader(SipProvider.ListeningPoint.Address, SipProvider.ListeningPoint.Port, SipConstants.Udp,
                                                             SipUtil.CreateBranch());
            var maxForwardsHeader = HeaderFactory.CreateMaxForwardsHeader();
            var request           = MessageFactory.CreateRequest(
                requestUri,
                SipMethods.Register,
                callIdheader,
                cseqHeader,
                fromHeader,
                toHeader,
                viaHeader,
                maxForwardsHeader);

            var proxyServerUri = AddressFactory.CreateUri(null, MainForm.SipStack.OutBoundProxy.ToString());
            var localHostUri   = AddressFactory.CreateUri(null, MainForm.SipProvider.ListeningPoint.ToString());
            var routeHeader    = HeaderFactory.CreateRouteHeader(proxyServerUri);
            var contactHeader  = HeaderFactory.CreateContactHeader(localHostUri);

            request.Routes.Add(routeHeader);
            request.Contacts.Add(contactHeader);
            return(request);
        }
コード例 #2
0
        private SipRequest CreateRegisterRequest(string user)
        {
            FormHelper.ValidateIsNotEmpty(_txtCallId.Text, "device id");

            var requestUri   = AddressFactory.CreateUri(null, MainForm.Configuration.RegistrarDomain);
            var toAddressUri = AddressFactory.CreateUri(user, MainForm.Configuration.RegistrarDomain);
            var toAddress    = AddressFactory.CreateAddress(null, toAddressUri);
            var toHeader     = HeaderFactory.CreateToHeader(toAddress);
            var fromHeader   = HeaderFactory.CreateFromHeader(toAddress, SipUtil.CreateTag());
            var cseqHeader   = HeaderFactory.CreateSCeqHeader(SipMethods.Register, ++commandSequence);
            var callIdheader = HeaderFactory.CreateCallIdHeader(_txtCallId.Text);
            var viaHeader    = HeaderFactory.CreateViaHeader(SipProvider.ListeningPoint.Address,
                                                             SipProvider.ListeningPoint.Port, SipConstants.Udp,
                                                             SipUtil.CreateBranch());
            var maxForwardsHeader = HeaderFactory.CreateMaxForwardsHeader();
            var request           = MessageFactory.CreateRequest(
                requestUri,
                SipMethods.Register,
                callIdheader,
                cseqHeader,
                fromHeader,
                toHeader,
                viaHeader,
                maxForwardsHeader);

            /*add routes and contacts*/
            var proxyServerUri = AddressFactory.CreateUri(null, MainForm.SipStack.OutBoundProxy.ToString());
            var routeHeader    = HeaderFactory.CreateRouteHeader(proxyServerUri);
            var localHostUri   = AddressFactory.CreateUri(null, _txtContactAddress.Text);
            var contactHeader  = HeaderFactory.CreateContactHeader(localHostUri);

            request.Routes.Add(routeHeader);

            return(request);
        }
コード例 #3
0
 private void OnLoad(object sender, EventArgs eventArgs)
 {
     _lblDomain.Text         = MainForm.Configuration.RegistrarDomain;
     _txtCallId.Text         = SipUtil.CreateCallId();
     _txtContactAddress.Text = SipProvider.ListeningPoint.ToString();
     _txtUser.Text           = "hannes";
 }
コード例 #4
0
ファイル: SipToHeaderBuilder.cs プロジェクト: goupviet/Hallo
 public SipToHeaderBuilder()
 {
     _displayInfo = TestConstants.MyUserName;
     _sipUri      = new SipUriBuilder().Build();
     _tag         = SipUtil.CreateTag();
     _name        = SipHeaderNames.To;
 }
コード例 #5
0
        public void Start(string to)
        {
            Check.IsTrue(!_isIncoming, "Failed to start a call. Only outgoing calls can be started.");

            if (!to.StartsWith("sip:"))
            {
                to = "sip:" + to;
            }

            if (!SipUtil.IsSipUri(to))
            {
                throw new ArgumentException("'to' argument is has invalid format.");
            }

            var uri = SipUtil.ParseSipUri(to);

            if (_softPhone.RegisteredPhoneLine == null)
            {
                if (uri.HasNamedHost())
                {
                    throw new ArgumentException("'to' argument is not valid. Since phone is not registered, 'to' can not be a named host. Only numeric IP hosts are supported.");
                }
                _toUri = uri;
            }
            else
            {
                _toUri = uri;
            }

            _startCommand.Execute(this);
        }
コード例 #6
0
        private void _chkPeerToPeer_CheckedChanged(object sender, EventArgs e)
        {
            var bindEndPoint = SipUtil.ParseIpEndPoint(MainForm.Configuration.BindIpEndPoint);

            _txtFromUri.Text = _chkPeerToPeer.Checked ? string.Format("sip:alice@{0}", bindEndPoint) : "sip:[email protected]";
            _txtToUri.Text   = _chkPeerToPeer.Checked ? string.Format("sip:bob@{0}",
                                                                      new IPEndPoint(bindEndPoint.Address, bindEndPoint.Port + 1)) : "sip:[email protected]";
        }
        protected override void When()
        {
            _call.Stop();
            var ringing = CreateRingingResponse(_receivedInvite, SipUtil.CreateTag());

            _network.SendTo(SipFormatter.FormatMessage(ringing), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitingforRingingProcessed.WaitOne();
        }
コード例 #8
0
 /// <summary>
 /// returns the host and port as an IPEndPoint
 /// </summary>
 /// <returns></returns>
 public IPEndPoint GetHostAndPort()
 {
     if (!SipUtil.IsIPAddress(Host))
     {
         throw new InvalidOperationException("Failed to convert Host to IpEndPoint. Host must be a numeric Ip address.");
     }
     return(new IPEndPoint(IPAddress.Parse(Host), Port));
 }
コード例 #9
0
        protected override void When()
        {
            _toTag = SipUtil.CreateTag();
            var provResponse = CreateRingingResponse(_receivedInvite, _toTag);

            _network.SendTo(SipFormatter.FormatMessage(provResponse), _testClientUaEndPoint, _phoneUaEndPoint);
            _ringingProcessed.WaitOne();
        }
        protected override void When()
        {
            _toTag = SipUtil.CreateTag();
            var provResponse = CreateResponse(_receivedInvite, _toTag, SipResponseCodes.x486_Busy_Here);

            _network.SendTo(SipFormatter.FormatMessage(provResponse), _testClientUaEndPoint, _phoneUaEndPoint);
            _waitingforResponseProcessed.WaitOne();
        }
コード例 #11
0
        private IPEndPoint GetDestinationEndPoint(SipUri uri)
        {
            if (SipUtil.IsIPAddress(uri.Host))
            {
                return(new IPEndPoint(IPAddress.Parse(uri.Host), uri.Port));
            }

            throw new NotSupportedException(ExceptionMessage.NamedHostsAreNotSupported);
        }
コード例 #12
0
        void Form_Load(object sender, EventArgs e)
        {
            _txtFromAlias.Text     = "alice";
            _txtToAlias.Text       = "bob";
            _chkPeerToPeer.Checked = false;
            _chkPeerToPeer_CheckedChanged(null, null);

            _softPhone = SoftPhoneFactory.CreateSoftPhone(SipUtil.ParseIpEndPoint(this.MainForm.Configuration.BindIpEndPoint));
            _softPhone.IncomingCall += _softPhone_IncomingCall;
            _softPhone.Start();
        }
コード例 #13
0
ファイル: Server.cs プロジェクト: goupviet/Hallo
        private void _btnStart_Click(object sender, EventArgs e)
        {
            var ipEndPoint = SipUtil.ParseIpEndPoint(_txtLocalIPAddress.Text);

            _stack = new SipStack();
            var listeningPoint = _stack.CreateUdpListeningPoint(ipEndPoint);

            _sipProvider = _stack.CreateSipProvider(listeningPoint);
            _sipProvider.AddSipListener(this);
            _stack.Start();
            _tmrDiagnostics.Start();
        }
コード例 #14
0
ファイル: DialogForm.cs プロジェクト: goupviet/Hallo
        private void Invite()
        {
            FormHelper.ValidateCondition(SipUtil.IsSipUri(_txtFromUri.Text), "From-uri");

            FormHelper.ValidateCondition(SipUtil.IsSipUri(_txtToUri.Text), "To-uri");

            var fromUri = SipUtil.ParseSipUri(_txtFromUri.Text);
            var toUri   = SipUtil.ParseSipUri(_txtToUri.Text);

            if (_chkPeerToPeer.Checked)
            {
                FormHelper.ValidateCondition(SipUtil.IsIpEndPoint(toUri.Host), "To-uri");
            }

            var requestUri   = toUri;
            var toAddress    = AddressFactory.CreateAddress(_txtToAlias.Text, toUri);
            var fromAddress  = AddressFactory.CreateAddress(_txtFromAlias.Text, fromUri);
            var toHeader     = HeaderFactory.CreateToHeader(toAddress);
            var fromHeader   = HeaderFactory.CreateFromHeader(fromAddress, SipUtil.CreateTag());
            var cseqHeader   = HeaderFactory.CreateSCeqHeader(SipMethods.Invite, ++commandSequence);
            var callIdheader = HeaderFactory.CreateCallIdHeader(SipUtil.CreateCallId());
            var viaHeader    = HeaderFactory.CreateViaHeader(SipProvider.ListeningPoint.Address,
                                                             SipProvider.ListeningPoint.Port, SipConstants.Udp,
                                                             SipUtil.CreateBranch());
            var maxForwardsHeader = HeaderFactory.CreateMaxForwardsHeader(1);
            var request           = MessageFactory.CreateRequest(
                requestUri,
                SipMethods.Invite,
                callIdheader,
                cseqHeader,
                fromHeader,
                toHeader,
                viaHeader,
                maxForwardsHeader);

            /*add routes and contacts*/
            if (!_chkPeerToPeer.Checked)
            {
                var proxyServerUri = AddressFactory.CreateUri(null, MainForm.SipStack.OutBoundProxy.ToString());
                proxyServerUri.IsLooseRouting = true;
                var routeHeader = HeaderFactory.CreateRouteHeader(proxyServerUri);
                request.Routes.Add(routeHeader);
            }
            var contactUri    = AddressFactory.CreateUri(fromUri.User, viaHeader.SentBy.ToString());
            var contactHeader = HeaderFactory.CreateContactHeader(contactUri);

            request.Contacts.Add(contactHeader);

            var transaction = SipProvider.CreateClientTransaction(request);

            _dialog = SipProvider.CreateClientDialog(transaction);
            transaction.SendRequest();
        }
コード例 #15
0
ファイル: TxTimer.cs プロジェクト: goupviet/Hallo
 public void Dispose()
 {
     if (_isDisposed)
     {
         return;
     }
     lock (_lock)
     {
         SipUtil.DisposeTimer(_timer);
         _isDisposed = true;
     }
 }
コード例 #16
0
        private void _btnSend_Click(object sender, EventArgs e)
        {
            if (_txtMessage.Text == string.Empty)
            {
                MessageBox.Show("Can not send an empty message");
            }

            UdpClient udpClient = new UdpClient(AddressFamily.InterNetwork);
            var       bytes     = SipFormatter.FormatToBytes(_txtMessage.Text);

            udpClient.Send(bytes, bytes.Length, SipUtil.ParseIpEndPoint(_txtSendTo.Text));
        }
コード例 #17
0
ファイル: SendForm.cs プロジェクト: goupviet/Hallo
        private void _btnRegister_Click(object sender, EventArgs e)
        {
            try
            {
                var requestUri   = AddressFactory.CreateUri(null, "registrar." + MainForm.Configuration.RegistrarDomain);
                var toAddressUri = AddressFactory.CreateUri("hannes", MainForm.Configuration.RegistrarDomain);
                var toAddress    = AddressFactory.CreateAddress("hannes", toAddressUri);
                var toHeader     = HeaderFactory.CreateToHeader(toAddress);
                var fromHeader   = HeaderFactory.CreateFromHeader(toAddress, SipUtil.CreateTag());
                var cseqHeader   = HeaderFactory.CreateSCeqHeader(SipMethods.Register, 1028);
                var callId       = SipUtil.CreateCallId();
                var callIdheader = HeaderFactory.CreateCallIdHeader(callId);
                var viaHeader    = HeaderFactory.CreateViaHeader(SipProvider.ListeningPoint.Address, SipProvider.ListeningPoint.Port, SipConstants.Udp,
                                                                 SipUtil.CreateBranch());
                var maxForwardsHeader = HeaderFactory.CreateMaxForwardsHeader();
                var request           = MessageFactory.CreateRequest(
                    requestUri,
                    SipMethods.Register,
                    callIdheader,
                    cseqHeader,
                    fromHeader,
                    toHeader,
                    viaHeader,
                    maxForwardsHeader);

                var proxyServerUri = AddressFactory.CreateUri(null, MainForm.SipStack.OutBoundProxy.ToString());
                var localHostUri   = AddressFactory.CreateUri(null, MainForm.SipProvider.ListeningPoint.ToString());
                var routeHeader    = HeaderFactory.CreateRouteHeader(proxyServerUri);
                var contactHeader  = HeaderFactory.CreateContactHeader(localHostUri);
                request.Routes.Add(routeHeader);
                request.Contacts.Add(contactHeader);

                EventAggregator.Instance.Publish(
                    new LogEvent(">>>>" + SipFormatter.FormatMessageEnvelope(request) + Environment.NewLine));

                if (_chbSendStateFull.Checked)
                {
                    var transaction = SipProvider.CreateClientTransaction(request);
                    transaction.SendRequest();
                }
                else
                {
                    SipProvider.SendRequest(request);
                }
            }
            catch (Exception ex)
            {
                MainForm.HandleException(ex);
            }
        }
コード例 #18
0
        private void _btnRegister_Click(object sender, EventArgs e)
        {
            int expirationTime = 0;

            FormHelper.ValidateIsNotEmpty(_txtUser.Text, "user");
            FormHelper.ValidateCondition(SipUtil.IsIpEndPoint(_txtContactAddress.Text), "host");
            FormHelper.ValidateCondition(int.TryParse(_txtExpirationTime.Text, out expirationTime), "expiration time");
            SendRequest(() =>
            {
                var request           = CreateRegisterRequest(_txtUser.Text);
                var localHostUri      = AddressFactory.CreateUri(null, _txtContactAddress.Text);
                var contactHeader     = HeaderFactory.CreateContactHeader(localHostUri);
                contactHeader.Expires = expirationTime;
                request.Contacts.Add(contactHeader);
                return(request);
            });
        }
コード例 #19
0
        public static byte[] FormatMessage(SipMessage message)
        {
            var envelope = FormatMessageEnvelope(message, true);

            var msg = SipUtil.ToUtf8Bytes(envelope);

            if (message.Body == null)
            {
                return(msg);
            }

            var bytes = new List <byte>(msg);

            bytes.AddRange(message.Body);

            return(bytes.ToArray());
        }
コード例 #20
0
        protected override void GivenOverride()
        {
            _call = _phone.CreateCall();
            _call.CallStateChanged += call_CallStateChanged;
            _call.Start(_testClientUaUri.FormatToString());

            _waitingforInviteReceived.WaitOne();
            _phone.InternalState.Should().Be(_stateProvider.GetWaitProvisional()); /*required assertion*/

            _toTag = SipUtil.CreateTag();
            var provResponse = CreateRingingResponse(_receivedInvite, _toTag);

            _network.SendTo(SipFormatter.FormatMessage(provResponse), _testClientUaEndPoint, _phoneUaEndPoint);
            _ringingProcessed.WaitOne();

            _phone.InternalState.Should().Be(_stateProvider.GetWaitFinal()); /*required assertion*/
        }
コード例 #21
0
        public SipInviteClientDialogSpecificationBase()
        {
            _toTag   = SipUtil.CreateTag();
            _fromTag = SipUtil.CreateTag();
            _callId  = SipUtil.CreateCallId();
            _cSeq    = 2;

            Sender          = new Mock <ISipMessageSender>();
            Listener        = new Mock <ISipListener>();
            DialogTable     = new SipDialogTable();
            InvitingRequest = CreateInviteRequest();

            InviteCtx = new Mock <ISipClientTransaction>();
            InviteCtx.Setup((tx) => tx.Request).Returns(InvitingRequest);

            var tfb = new TimerFactoryStubBuilder();

            TimerFactory = tfb.Build();
        }
コード例 #22
0
ファイル: DialogForm.cs プロジェクト: goupviet/Hallo
        private void SendRinging()
        {
            if (_ringingResponse == null)
            {
                _ringingResponse        = _inviteRequest.CreateResponse(SipResponseCodes.x180_Ringing);
                _ringingResponse.To.Tag = SipUtil.CreateTag();
                var contactUri = AddressFactory.CreateUri("", MainForm.SipProvider.ListeningPoint.ToString());
                _ringingResponse.Contacts.Add(HeaderFactory.CreateContactHeader(contactUri));

                _inviteTransaction =
                    (SipInviteServerTransaction)SipProvider.CreateServerTransaction(_inviteRequest);
                _dialog = SipProvider.CreateServerDialog(_inviteTransaction);
                _inviteTransaction.SendResponse(_ringingResponse);
            }
            else
            {
                _inviteTransaction.SendResponse(_ringingResponse);
            }
        }
コード例 #23
0
        private void _btnPhone_Click(object sender, EventArgs e)
        {
            if (!_callState.HasValue || _callState.Value == CallState.Completed)
            {
                FormHelper.ValidateCondition(SipUtil.IsSipUri(_txtToUri.Text), "To-uri");

                _outgoingCall = _softPhone.CreateCall();
                WireEvents(_outgoingCall);
                _outgoingCall.Start(_txtToUri.Text);
                Log("Call started");
            }
            else if (_callState.Value == CallState.Ringing)
            {
                _incomingCall.Accept();
            }
            else if (_callState.Value == CallState.Ringback || _callState.Value == CallState.InCall)
            {
                _outgoingCall.Stop();
            }
        }
コード例 #24
0
        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);
            }
        }
コード例 #25
0
        public SipInviteServerDialogSpecificationBase()
        {
            _toTag   = SipUtil.CreateTag();
            _fromTag = SipUtil.CreateTag();
            _callId  = SipUtil.CreateCallId();
            _cSeq    = 2;

            Sender          = new Mock <ISipMessageSender>();
            Listener        = new Mock <ISipListener>();
            DialogTable     = new SipDialogTable();
            ReceivedRequest = CreateInviteRequest();

            InviteStx = new Mock <ISipServerTransaction>();
            InviteStx.Setup((tx) => tx.Request).Returns(ReceivedRequest);

            var tfb = new TimerFactoryStubBuilder()
                      .WithInviteCtxRetransmitTimerInterceptor(OnCreateRetransmitOkTimer)
                      .WithInviteCtxTimeOutTimerInterceptor(OnCreateTimeOutTimer);

            TimerFactory = tfb.Build();
        }
コード例 #26
0
        protected SipRequest CreateInviteRequest(SipUri from, SipUri to)
        {
            var r = new SipRequestBuilder()
                    .WithRequestLine(
                new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build())
                    .WithCSeq(
                new SipCSeqHeaderBuilder().WithCommand(SipMethods.Invite).WithSequence(1).Build())
                    .WithFrom(
                new SipFromHeaderBuilder().WithSipUri(from).WithTag(SipUtil.CreateTag()).Build())
                    .WithTo(
                new SipToHeaderBuilder().WithSipUri(to).WithTag(null).Build())
                    .WithCallId(
                new SipCallIdHeaderBuilder().WithValue(SipUtil.CreateCallId()).Build())
                    .WithContacts(
                new SipContactHeaderListBuilder()
                .Add(new SipContactHeaderBuilder().WithSipUri(from).Build())
                .Build())
                    .Build();

            return(r);
        }
コード例 #27
0
ファイル: ClientMainForm.cs プロジェクト: goupviet/Hallo
        private void _btnStartStop_Click(object sender, EventArgs e)
        {
            if (!_isStarted)
            {
                var ipEndPoint    = SipUtil.ParseIpEndPoint(Configuration.BindIpEndPoint);
                var outboundProxy = SipUtil.ParseIpEndPoint(Configuration.OutboundProxyIpEndPoint);
                SipStack = new SipStack();
                var listeningPoint = SipStack.CreateUdpListeningPoint(ipEndPoint);
                SipStack.MaxWorkerThreads = Configuration.MaxThreadPoolSize;
                SipStack.MinWorkerThreads = Configuration.MinThreadPoolSize;
                SipStack.OutBoundProxy    = outboundProxy;
                SipStack.EnableThreadPoolPerformanceCounters = Configuration.EnableThreadPoolPerformanceCounters;
                //SipStack.IsStateFull = Configuration.IsStateFull;
                SipProvider     = (SipProvider)SipStack.CreateSipProvider(listeningPoint);
                MainSipListener = new SipPipeLineListener(this);
                SipProvider.AddSipListener(MainSipListener);
                SipProvider.AddExceptionHandler(this);
                SipProvider.Start();


                HeaderFactory  = SipStack.CreateHeaderFactory();
                MessageFactory = SipStack.CreateMessageFactory();
                AddressFactory = SipStack.CreateAddressFactory();

                ExecuteActionHelper.ExecuteAction(delegate()
                {
                    FormsManager.OpenForm(typeof(LogForm), null);
                });

                _lblIpAddress.Text = string.Format("IP:{0}", ipEndPoint.ToString());
            }
            else
            {
                SipProvider.Stop();
            }

            _isStarted             = !_isStarted;
            _btnStartStop.Text     = _isStarted ? "Stop" : "Start";
            _grbNavigation.Enabled = _isStarted;
        }
コード例 #28
0
        protected SipRequest CreateRequest(string method)
        {
            /*create the 'INVITE' message*/
            SipAddressFactory addressFactory = _stack.CreateAddressFactory();
            SipHeaderFactory  headerFactory  = _stack.CreateHeaderFactory();
            SipMessageFactory messageFactory = _stack.CreateMessageFactory();

            SipUri     senderSipUri     = addressFactory.CreateUri(string.Empty, new IPEndPoint(_ipAddress, 12345).ToString());
            SipAddress senderSipAddress = addressFactory.CreateAddress(string.Empty, senderSipUri);

            SipUri     receiverSipUri     = addressFactory.CreateUri(string.Empty, new IPEndPoint(_ipAddress, 23456).ToString());
            SipAddress receiverSipAddress = addressFactory.CreateAddress(string.Empty, senderSipUri);

            SipToHeader     toHeader     = headerFactory.CreateToHeader(receiverSipAddress);
            SipFromHeader   fromHeader   = headerFactory.CreateFromHeader(senderSipAddress, SipUtil.CreateTag());
            SipCSeqHeader   cseqHeader   = headerFactory.CreateSCeqHeader(method, 1);
            SipCallIdHeader callIdheader = headerFactory.CreateCallIdHeader(SipUtil.CreateCallId());
            SipViaHeader    viaHeader    = headerFactory.CreateViaHeader(_ipAddress, 12345, SipConstants.Udp,
                                                                         SipUtil.CreateBranch());
            SipMaxForwardsHeader maxForwardsHeader = headerFactory.CreateMaxForwardsHeader();
            SipRequest           request           = messageFactory.CreateRequest(
                receiverSipUri,
                method,
                callIdheader,
                cseqHeader,
                fromHeader,
                toHeader,
                viaHeader,
                maxForwardsHeader);

            if (method == SipMethods.Invite)
            {
                SipContactHeader contactHeader = headerFactory.CreateContactHeader(senderSipUri);
                request.Contacts.Add(contactHeader);
            }

            return(request);
        }
コード例 #29
0
 public static byte[] FormatToBytes(string value)
 {
     return(SipUtil.ToUtf8Bytes(value));
 }
コード例 #30
0
 public SipCallIdHeaderBuilder()
 {
     _value = SipUtil.CreateCallId();
     _name  = SipHeaderNames.CallId;
 }