Exemplo 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());
        }
Exemplo n.º 2
0
 internal override StateResult ProcessRequest(SipNonInviteServerTransaction ctx, SipRequestEvent request)
 {
     /*17.2.2. : While in the "Completed" state, the server transaction MUST pass the final response to the transport
      * layer for retransmission whenever a retransmission of the request is received. */
     ctx.SendResponseInternal();
     return(new StateResult());
 }
Exemplo n.º 3
0
 internal override StateResult ProcessRequest(SipNonInviteServerTransaction ctx, SipRequestEvent request)
 {
     /*17.2.2. : While in the "Completed" state, the server transaction MUST pass the final response to the transport
     layer for retransmission whenever a retransmission of the request is received. */
     ctx.SendResponseInternal();
     return new StateResult();
 }
Exemplo n.º 4
0
            internal override void HandleSendingResponse(SipNonInviteServerTransaction tx, SipResponse response)
            {
                var statusCode = response.StatusLine.StatusCode;

                if (statusCode >= 100 && statusCode < 200)
                {
                tx.SendResponseInternal(response);
                }
                else if (statusCode >= 200 && statusCode < 700)
                {
                tx.SendResponseInternal(response);
                tx.ChangeState(SipNonInviteServerTransaction.CompletedState);
                }
            }
Exemplo n.º 5
0
            internal override void HandleSendingResponse(SipNonInviteServerTransaction tx, SipResponse response)
            {
                var statusCode = response.StatusLine.StatusCode;

                if (statusCode >= 100 && statusCode < 200)
                {
                    tx.SendResponseInternal(response);
                }
                else if (statusCode >= 200 && statusCode < 700)
                {
                    tx.SendResponseInternal(response);
                    tx.ChangeState(SipNonInviteServerTransaction.CompletedState);
                }
            }
Exemplo n.º 6
0
 internal abstract void Initialize(SipNonInviteServerTransaction transaction);
Exemplo n.º 7
0
 internal override StateResult ProcessRequest(SipNonInviteServerTransaction tx, SipRequestEvent request)
 {
     tx.SendResponseInternal();
     return new StateResult();
 }
Exemplo n.º 8
0
 internal override void Initialize(SipNonInviteServerTransaction transaction)
 {
 }
Exemplo n.º 9
0
 protected override void Given()
 {
     _ctx = new SipNonInviteServerTransaction(TxTable, Request, Listener.Object, Sender.Object, TimerFactory);
     _ctx.Initialize();
     GivenOverride();
 }
Exemplo n.º 10
0
 internal abstract StateResult ProcessRequest(SipNonInviteServerTransaction ctx, SipRequestEvent request);
Exemplo n.º 11
0
 internal abstract void HandleSendingResponse(SipNonInviteServerTransaction transaction, SipResponse response);
Exemplo n.º 12
0
 internal override StateResult ProcessRequest(SipNonInviteServerTransaction ctx, SipRequestEvent request)
 {
     /*17.2.2.: retransmitted requests in the trying state should be discarded.*/
     return(new StateResult());
 }
Exemplo n.º 13
0
 internal override void Initialize(SipNonInviteServerTransaction transaction)
 {
 }
Exemplo n.º 14
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);
 }
Exemplo n.º 16
0
 internal override StateResult ProcessRequest(SipNonInviteServerTransaction tx, SipRequestEvent request)
 {
     tx.SendResponseInternal();
     return(new StateResult());
 }
Exemplo n.º 17
0
 internal override StateResult ProcessRequest(SipNonInviteServerTransaction ctx, SipRequestEvent request)
 {
     /*17.2.2.: retransmitted requests in the trying state should be discarded.*/
     return new StateResult();
 }
Exemplo n.º 18
0
 internal abstract StateResult ProcessRequest(SipNonInviteServerTransaction ctx, SipRequestEvent request);
Exemplo n.º 19
0
 internal abstract void HandleSendingResponse(SipNonInviteServerTransaction transaction, SipResponse response);
Exemplo n.º 20
0
 internal override void HandleSendingResponse(SipNonInviteServerTransaction transaction, SipResponse response)
 {
     /*Final responses passed by the TU to the server transaction MUST be discarded while in the "Completed" state.*/
 }
Exemplo n.º 21
0
 internal abstract void Initialize(SipNonInviteServerTransaction transaction);
Exemplo n.º 22
0
 internal override void HandleSendingResponse(SipNonInviteServerTransaction transaction, SipResponse response)
 {
     /*Final responses passed by the TU to the server transaction MUST be discarded while in the "Completed" state.*/
 }
Exemplo n.º 23
0
 internal override void Initialize(SipNonInviteServerTransaction ctx)
 {
     ctx.EndCompletedTimer.Start();
 }
Exemplo n.º 24
0
 internal override void Initialize(SipNonInviteServerTransaction ctx)
 {
     ctx.EndCompletedTimer.Start();
 }