/// <summary> /// Starts sending request to next hop in queue. /// </summary> /// <exception cref="InvalidOperationException">Is raised when no next hop available(m_pHops.Count == 0) and this method is accessed.</exception> private void SendToNextHop() { if (m_pHops.Count == 0) { throw new InvalidOperationException("No more hop(s)."); } SIP_Hop hop = m_pHops.Dequeue(); SendToFlow(m_pStack.TransportLayer.GetOrCreateFlow(hop.Transport, null, hop.EndPoint), m_pRequest.Copy()); }
/// <summary> /// Sends request to the specified hop. /// </summary> /// <param name="request">SIP request.</param> /// <param name="localEP">Local end point. Value null means system will allocate it.</param> /// <param name="hop">Target hop.</param> /// <exception cref="ObjectDisposedException">Is raised when this object is disposed and and this method is accessed.</exception> /// <exception cref="ArgumentNullException">Is raised when <b>request</b> or <b>hop</b> is null reference.</exception> public void SendRequest(SIP_Request request, IPEndPoint localEP, SIP_Hop hop) { if (m_IsDisposed) { throw new ObjectDisposedException(GetType().Name); } if (request == null) { throw new ArgumentNullException("request"); } if (hop == null) { throw new ArgumentNullException("hop"); } SendRequest(GetOrCreateFlow(hop.Transport, localEP, hop.EndPoint), request); }