protected override void AfterPhoneProcessedResponse(IInternalSoftPhone softPhone, SipResponseEvent responseEvent) { if (responseEvent.Response.StatusLine.StatusCode == 200 && responseEvent.Response.CSeq.Command == SipMethods.Bye) { _waitForOkByeProcessed.Set(); } }
protected override void GivenOverride() { Ctx.SendRequest(); /*force it to go into calling state*/ response = CreateFinalResponseEvent(500, "Internal Server error"); Ctx.ProcessResponse(response); Ctx.State.Should().Be(SipInviteClientTransaction.CompletedState); /*required assertion*/ }
public void ProcessResponse(IInternalSoftPhone softPhone, SipResponseEvent responseEvent) { ProcessResponseCounter++; _state.ProcessResponse(softPhone, responseEvent); _afterProcessResponse(softPhone, responseEvent); }
private void OnProcessResponse(SipResponseEvent sipResponseEvent) { _onProcessResponseCount++; _sipResponseEvent = sipResponseEvent; if (sipResponseEvent.Dialog != null && sipResponseEvent.Response.StatusLine.StatusCode == 200) { var ack = sipResponseEvent.Dialog.As<SipInviteClientDialog>().CreateAck(); sipResponseEvent.Dialog.As<SipInviteClientDialog>().SendAck(ack); } }
protected override void GivenOverride() { /*force it to go into confirmed state*/ _okResponse = CreateOkResponse(); _rer = new SipResponseEventBuilder().WithResponse(CreateRingingResponse()).WithClientTx(InviteCtx.Object).Build(); _reo = new SipResponseEventBuilder().WithResponse(_okResponse).WithClientTx(InviteCtx.Object).Build(); ClientDialog.ProcessResponse(_rer); ClientDialog.ProcessResponse(_reo); ClientDialog.State.Should().Be(DialogState.Confirmed); /*required assertion*/ _ackRequest = ClientDialog.CreateAck(); ClientDialog.SendAck(_ackRequest); /*sent an ack*/ _beforeSentSeqNr = ClientDialog.LocalSequenceNr; }
public void ProcessResponse(SipResponseEvent responseEvent) { if (responseEvent.Response.CSeq.Command == SipMethods.Invite) { if (responseEvent.Response.StatusLine.ResponseCode == SipResponseCodes.x180_Ringing) { /*the callee party sends a ring tone. Play ringing tone locally*/ } else if (responseEvent.Response.StatusLine.StatusCode/100 == 2) { var inviteTransaction = (SipInviteClientTransaction) responseEvent.ClientTransaction; var dialog = (SipInviteClientDialog)inviteTransaction.GetDialog(); var ackRequest = dialog.CreateAck(); dialog.SendAck(ackRequest); //TODO: inform user that the remote party has picked up de phone } } }
private void OnProcessResponse(SipResponseEvent sipResponseEvent) { _onProcessResponseCount++; _sipResponseEvent = sipResponseEvent; }
public void ProcessResponse(IInternalSoftPhone softPhone, SipResponseEvent responseEvent) { }
protected override void When() { var cb = new SipContextBuilder().WithResponse(_okResponse).Build(); var rEvent = new SipResponseEvent(cb); ClientDialog.ProcessResponse(rEvent); }
public void ProcessResponse(SipResponseEvent responseEvent) { Log("Received a response. Status:'{0}'", responseEvent.Response.StatusLine.FormatToString()); var div100 = responseEvent.Response.StatusLine.StatusCode / 100; if (div100 == 1) { Log("Received a provisional response. Waiting for a final response"); GoToState(PhoneState.WaitForFinal);; RefreshDialogForm(responseEvent.Dialog); } else if (div100 == 2) { Log("Received a OK response. Sending Ack..."); SendAck(_dialog as SipInviteClientDialog); Log("Ack send. Call established."); GoToState(PhoneState.CallerEstablished); RefreshDialogForm(responseEvent.Dialog); } else if (div100 > 2) { Log("Received a final response other then OK. Terminating dialog..."); if (responseEvent.Dialog != null) { responseEvent.Dialog.Terminate(); GoToState(PhoneState.Idle); Log("Dialog terminated. Phone in idle state"); } } }
protected override void AfterPhoneProcessedResponse(IInternalSoftPhone softPhone, Hallo.Sip.Stack.SipResponseEvent responseEvent) { }
private void OnIncomingResponseContext(SipContext context) { if (_responseReceivedObserver != null) _responseReceivedObserver.OnNext(context.Response); ISipResponseProcessor sipResponseProcessor = _sipListener; var responseEvent = new SipResponseEvent(context); //get dialog. if dialog found, the listener for the tx is the dialog. SipAbstractClientTransaction ctx; if (_logger.IsDebugEnabled) _logger.Debug("Searching the table for a matching tx.."); if(_ctxTable.TryGetValue(GetClientTransactionId(responseEvent.Response), out ctx)) { if (_logger.IsTraceEnabled) _logger.Trace("Found a matching tx. Setting it as the responseProcessor."); sipResponseProcessor = ctx; SipAbstractDialog found; if (ctx.GetDialog() == null) { if (_logger.IsDebugEnabled) _logger.Debug("Searching the table for a matching dialog..."); if(_dialogTable.TryGetValue(GetDialogId(responseEvent.Response, false), out found)) { if (_logger.IsDebugEnabled) _logger.Debug("Found a matching dialog."); ctx.SetDialog(found); } else { if (_logger.IsDebugEnabled) _logger.Debug("A matching dialog could not be found."); } } } else { if (_logger.IsDebugEnabled) _logger.Debug("Could not find a matching tx.."); if (_logger.IsDebugEnabled) _logger.Debug("Searching the table for a matching dialog..."); /*try dialog as processor*/ SipAbstractDialog dialog; if (_dialogTable.TryGetValue(GetDialogId(responseEvent.Response, false), out dialog)) { if (_logger.IsTraceEnabled) _logger.Trace("Found a matching dialog. Setting it as the responseProcessor."); sipResponseProcessor = dialog; } else { if (_logger.IsTraceEnabled) _logger.Trace("Could not find a matching dialog. Using the SipProvider's SipListener as the responseProcessor."); } } try { sipResponseProcessor.ProcessResponse(responseEvent); } catch (Exception err) { _logger.ErrorException("Response failed.", err); throw; } }
public void ProcessResponse(SipResponseEvent responseEvent) { string responseCode = responseEvent.Response.StatusLine.ResponseCode; _logger.Debug("Processing response: {0} ...", responseCode); InternalState.ProcessResponse(this, responseEvent); _logger.Debug("Response processed."); }
public void ProcessResponse(SipResponseEvent responseEvent) { throw new NotImplementedException(); }
protected virtual void AfterPhoneProcessedResponse(IInternalSoftPhone softPhone, SipResponseEvent responseEvent) { }
public void ProcessResponse(SipResponseEvent responseEvent) { Console.WriteLine("Received '{0}' response, from '{1}' request", responseEvent.Response.StatusLine.ResponseCode, responseEvent.Response.CSeq.Command); }
public void ProcessResponse(SipResponseEvent responseEvent) { OnProcessResponse(responseEvent); }
internal void Update(SipResponseEvent responseEvent) { }
private void OnProcessResponse(SipResponseEvent sipResponseEvent) { _onProcessResponseCount++; _sipResponseEvent = sipResponseEvent; _transaction = sipResponseEvent.ClientTransaction.As<SipInviteClientTransaction>(); }
public void ProcessResponse(SipResponseEvent responseEvent) { EventAggregator.Instance.Publish(new LogEvent("<<<< [RECEIVED RESPONSE]" + SipFormatter.FormatMessageEnvelope(responseEvent.Response))); _listener.ProcessResponse(responseEvent); }