示例#1
0
        public ISipServerTransaction CreateServerTransaction(SipRequest request)
        {
            Check.Require(request, "request");
            Check.IsTrue(SipMethods.IsMethod(request.RequestLine.Method), "Request method is not supported");

            ISipServerTransaction tx;

            if (request.RequestLine.Method == SipMethods.Ack)
            {
                throw new ArgumentException("Can not create a transaction for the 'ACK' request");
            }

            ISipListener txListener = _sipListener;

            SipAbstractDialog dialog;

            if (_dialogTable.TryGetValue(GetDialogId(request, true), out dialog))
            {
                txListener = dialog;
            }

            if (request.RequestLine.Method == SipMethods.Invite)
            {
                var istx = new SipInviteServerTransaction(
                    ServerTransactionTable,
                    this,
                    txListener,
                    request,
                    _stack.GetTimerFactory());
                //istx.Start();
                tx = istx;
            }
            else
            {
                var nistx = new SipNonInviteServerTransaction(
                    ServerTransactionTable,
                    request,
                    txListener,
                    this,
                    _stack.GetTimerFactory());
                //nistx.Start();
                tx = nistx;
            }

            return(tx);
        }
示例#2
0
        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);
            }
        }
示例#3
0
 internal override StateResult ProcessRequest(SipInviteServerTransaction transaction, SipRequestEvent request)
 {
     return new StateResult();
 }
示例#4
0
 internal override void Initialize(SipInviteServerTransaction transaction)
 {
 }
示例#5
0
 internal override StateResult HandleSendingResponse(SipInviteServerTransaction transaction,
                                                     SipResponse response)
 {
     return new StateResult();
 }
示例#6
0
 internal override StateResult HandleSendingResponse(SipInviteServerTransaction transaction,
                                                     SipResponse response)
 {
     return(new StateResult());
 }
示例#7
0
 internal override StateResult ProcessRequest(SipInviteServerTransaction transaction, SipRequestEvent request)
 {
     return(new StateResult());
 }
示例#8
0
 internal override void Initialize(SipInviteServerTransaction transaction)
 {
 }
示例#9
0
 protected override void Given()
 {
     _ctx = new SipInviteServerTransaction(TxTable, Sender.Object, Listener.Object, Request, TimerFactory);
     GivenOverride();
 }