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 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 TxSpecificationBase() { Sender = new Mock<ISipMessageSender>(); Listener = new Mock<ISipListener>(); TxTable = new SipServerTransactionTable(); Request = new SipRequestBuilder().Build(); var tf = new TimerFactoryStub(); tf.CreateNonInviteStxEndCompletedTimerInterceptor = CreateDefaultNonInviteStxEndCompletedTimer; TimerFactory = tf; }
public TxSpecificationBase() { Sender = new Mock <ISipMessageSender>(); Listener = new Mock <ISipListener>(); TxTable = new SipServerTransactionTable(); Request = new SipRequestBuilder().Build(); var tf = new TimerFactoryStub(); tf.CreateNonInviteStxEndCompletedTimerInterceptor = CreateDefaultNonInviteStxEndCompletedTimer; TimerFactory = tf; }
internal SipNonInviteServerTransaction( SipServerTransactionTable table, SipRequest request, ISipListener listener, ISipMessageSender messageSender, ITimerFactory timerFactory) : base(table, request, listener, messageSender, timerFactory) { Check.IsTrue(request.RequestLine.Method != SipMethods.Invite, "Request method can not be 'INVITE'."); Check.IsTrue(request.RequestLine.Method != SipMethods.Ack, "Request method can not be 'ACK'."); EndCompletedTimer = _timerFactory.CreateNonInviteStxEndCompletedTimer(OnCompletedEnded); }
public TxSpecificationBase() { Sender = new Mock <ISipMessageSender>(); Listener = new Mock <ISipListener>(); TxTable = new SipServerTransactionTable(); Request = new SipRequestBuilder() .WithRequestLine ( new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build() ) .Build(); TimerFactory = new TimerFactoryStubBuilder().Build(); }
public TxSpecificationBase() { Sender = new Mock<ISipMessageSender>(); Listener = new Mock<ISipListener>(); TxTable = new SipServerTransactionTable(); Request = new SipRequestBuilder() .WithRequestLine ( new SipRequestLineBuilder().WithMethod(SipMethods.Invite).Build() ) .Build(); TimerFactory = new TimerFactoryStubBuilder().Build(); }
//want follow the jain-sip implementation. I just use a guid. SipUtil.CreateCallId(); //public SipCallIdHeader GetNewCallId() //{ // String callId = SipUtil.GenerateCallIdentifier(this.getListeningPoint() // .getIPAddress()); // SipCallIdHeader callid = new SipCallIdHeader(); // return callid; //} internal SipProvider(SipStack stack, ISipContextSource contextSource) { Check.Require(stack, "stack"); Check.Require(contextSource, "contextSource"); _stack = stack; _contextSource = contextSource; contextSource.NewContextReceived += (s, e) => OnNewContextReceived(e.Context); contextSource.UnhandledException += (s, e) => OnContextSourceUnhandledException(e.Exception); _ctxTable = new SipClientTransactionTable(); _stxTable = new SipServerTransactionTable(); _dialogTable = new SipDialogTable(); }
protected SipAbstractServerTransaction(SipServerTransactionTable table, SipRequest request, ISipListener listener, ISipMessageSender messageSender, ITimerFactory timerFactory) { Check.Require(table, "table"); Check.Require(request, "request"); Check.Require(listener, "listener"); Check.Require(messageSender, "messageSender"); Check.Require(timerFactory, "timerFactory"); _table = table; _request = request; _listener = listener; _messageSender = messageSender; _timerFactory = timerFactory; }
//want follow the jain-sip implementation. I just use a guid. SipUtil.CreateCallId(); //public SipCallIdHeader GetNewCallId() //{ // String callId = SipUtil.GenerateCallIdentifier(this.getListeningPoint() // .getIPAddress()); // SipCallIdHeader callid = new SipCallIdHeader(); // return callid; //} internal SipProvider(SipStack stack, ISipContextSource contextSource) { Check.Require(stack, "stack"); Check.Require(contextSource, "contextSource"); _stack = stack; _contextSource = contextSource; contextSource.NewContextReceived +=(s,e) => OnNewContextReceived(e.Context); contextSource.UnhandledException += (s, e) => OnContextSourceUnhandledException(e.Exception); _ctxTable = new SipClientTransactionTable(); _stxTable = new SipServerTransactionTable(); _dialogTable = new SipDialogTable(); }
internal SipInviteServerTransaction( SipServerTransactionTable table, ISipMessageSender messageSender, ISipListener listener, SipRequest request, ITimerFactory timerFactory) : base(table, request, listener, messageSender, timerFactory) { Check.IsTrue(request.RequestLine.Method == SipMethods.Invite, "Method other then 'INVITE' is not allowed"); _logger = NLog.LogManager.GetCurrentClassLogger(); ReTransmitNonx200FinalResponseTimer = _timerFactory.CreateInviteStxRetransmitTimer(OnReTransmitNonx200FinalResponse); EndCompletedTimer = _timerFactory.CreateInviteStxEndCompletedTimer(OnCompletedEnded); EndConfirmedTimer = _timerFactory.CreateInviteStxEndConfirmed(OnConfirmedEnded); SendTryingTimer = _timerFactory.CreateInviteStxSendTryingTimer(OnSendTryingTimer); }