internal override StateResult ProcessRequest(SipInviteServerTransaction tx, SipRequestEvent requestEvent) { /* 17.2.1 If an ACK is received while the server transaction is in the "Completed" state, the server transaction MUST transition to the "Confirmed" state. */ if (requestEvent.Request.RequestLine.Method == SipMethods.Ack) { tx.ChangeState(SipInviteServerTransaction.ConfirmedState); } else { tx.SendResponseInternal(); } return new StateResult(); }
internal override StateResult ProcessRequest(SipInviteServerTransaction tx, SipRequestEvent requestEvent) { /* 17.2.1 If an ACK is received while the server transaction is in the * "Completed" state, the server transaction MUST transition to the * "Confirmed" state. */ if (requestEvent.Request.RequestLine.Method == SipMethods.Ack) { tx.ChangeState(SipInviteServerTransaction.ConfirmedState); } else { tx.SendResponseInternal(); } return(new StateResult()); }
internal override StateResult HandleSendingResponse(SipInviteServerTransaction tx, SipResponse response) { var stateResult = new StateResult(); var statusCode = response.StatusLine.StatusCode; if (statusCode >= 100 && statusCode < 200) { tx.SendResponseInternal(response); } else if (statusCode >= 200 && statusCode < 300) { tx.SendResponseInternal(response); stateResult.Dispose = true; } else if (statusCode >= 300 && statusCode < 700) { tx.SendResponseInternal(response); tx.ChangeState(SipInviteServerTransaction.CompletedState); } return(stateResult); }
internal override StateResult HandleSendingResponse(SipInviteServerTransaction tx, SipResponse response) { var stateResult = new StateResult(); var statusCode = response.StatusLine.StatusCode; if (statusCode >= 100 && statusCode < 200) { tx.SendResponseInternal(response); } else if (statusCode >= 200 && statusCode < 300) { tx.SendResponseInternal(response); stateResult.Dispose = true; } else if (statusCode >= 300 && statusCode < 700) { tx.SendResponseInternal(response); tx.ChangeState(SipInviteServerTransaction.CompletedState); } return stateResult; }
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; }
internal abstract void Initialize(SipInviteServerTransaction transaction);
internal override StateResult HandleSendingResponse(SipInviteServerTransaction transaction, SipResponse response) { //in this state the uas is not suposed to sent anymore throw new InvalidOperationException(); }
internal override StateResult ProcessRequest(SipInviteServerTransaction transaction, SipRequestEvent request) { //absorb ack's return new StateResult(); }
internal override StateResult HandleSendingResponse(SipInviteServerTransaction transaction, SipResponse response) { throw new InvalidOperationException(); }
internal override StateResult ProcessRequest(SipInviteServerTransaction tx, SipRequestEvent requestEvent) { tx.SendResponseInternal(); requestEvent.IsSent = true; return new StateResult(); }
internal override void Initialize(SipInviteServerTransaction tx) { tx.SendTryingTimer.Start(); }
internal override void Initialize(SipInviteServerTransaction tx) { tx.ReTransmitNonx200FinalResponseTimer.Dispose(); tx.EndCompletedTimer.Dispose(); tx.EndConfirmedTimer.Start(); }
public void RetransmitNonx200FinalResponse(SipInviteServerTransaction tx) { tx.ReTransmitNonx200FinalResponseTimer.Interval = Math.Min(2 * tx.ReTransmitNonx200FinalResponseTimer.Interval, SipConstants.T2); tx.SendResponseInternal(); }
internal override StateResult ProcessRequest(SipInviteServerTransaction transaction, SipRequestEvent request) { //absorb ack's return(new StateResult()); }
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); } }
protected override void Given() { _ctx = new SipInviteServerTransaction(TxTable, Sender.Object, Listener.Object, Request, TimerFactory); GivenOverride(); }
public void RetransmitNonx200FinalResponse(SipInviteServerTransaction tx) { tx.ReTransmitNonx200FinalResponseTimer.Interval = Math.Min(2*tx.ReTransmitNonx200FinalResponseTimer.Interval, SipConstants.T2); tx.SendResponseInternal(); }
internal override void Initialize(SipInviteServerTransaction tx) { tx.SendTryingTimer.Dispose(); tx.ReTransmitNonx200FinalResponseTimer.Start(); tx.EndCompletedTimer.Start(); }
internal abstract StateResult ProcessRequest(SipInviteServerTransaction transaction, SipRequestEvent request);
internal abstract StateResult HandleSendingResponse(SipInviteServerTransaction transaction, SipResponse response);
internal override StateResult ProcessRequest(SipInviteServerTransaction tx, SipRequestEvent requestEvent) { tx.SendResponseInternal(); requestEvent.IsSent = true; return(new StateResult()); }