Esempio n. 1
0
        public void ExpectStxToDisposeThemselfWhenTheirEndTimerHasFired()
        {
            var s          = new Mock <ISipMessageSender>();
            var l          = new Mock <ISipListener>();
            var txTable    = new SipServerTransactionTable();
            var tfsBuilder = new TimerFactoryStubBuilder();

            tfsBuilder.WithNonInviteStxEndCompletedTimerInterceptor((a) => new TxTimerStub(a, 1000, false, AfterCallBack));
            tfs = tfsBuilder.Build();
            for (int i = 0; i < Number; i++)
            {
                var r   = new SipRequestBuilder().WithCSeq(new SipCSeqHeaderBuilder().WithSequence(i).Build()).Build();
                var stx = new SipNonInviteServerTransaction(txTable, r, l.Object, s.Object, tfs);

                /*go to completed state */
                stx.SendResponse(new SipResponseBuilder()
                                 .WithStatusLine(new SipStatusLineBuilder()
                                                 .WithStatusCode(200)
                                                 .WithReason("OK")
                                                 .Build())
                                 .Build());
            }

            /*wait for Number of timers to fire*/
            are.WaitOne();

            Assert.IsTrue(!txTable.AsEnumerable().Any());
        }
Esempio n. 2
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);
        }
 protected override void Given()
 {
     Stx = new SipNonInviteServerTransaction(TxTable, Request, Listener.Object, Sender.Object, TimerFactory);
 }
Esempio n. 4
0
 protected override void Given()
 {
     _ctx = new SipNonInviteServerTransaction(TxTable, Request, Listener.Object, Sender.Object, TimerFactory);
     _ctx.Initialize();
     GivenOverride();
 }