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()); }
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); }
protected override void Given() { _ctx = new SipNonInviteServerTransaction(TxTable, Request, Listener.Object, Sender.Object, TimerFactory); _ctx.Initialize(); GivenOverride(); }