Ejemplo n.º 1
0
        private void CancelClients(RequestProxy requestProxy, SipMessageReader message)
        {
            lock (requestProxy)
            {
                var proxies = requestProxy.GetAllProxie();

                for (int i = 0; i < proxies.Count; i++)
                {
                    if (proxies[i].IsFinalReceived == false && proxies[i].IsCancelSent == false)
                    {
                        proxies[i].IsCancelSent = true;

                        if (Transaction.GetTransactionKind(proxies[i].TransactionId) == Transaction.Kind.InviteClient)
                        {
                            var writer = GetWriter();
                            proxies[i].GenerateCancel(writer, message);

                            int transactionKId = Transaction.GetRelaytedCancelClientKId(proxies[i].TransactionId);

                            requestProducer.SendRequest(proxies[i].ToConnectionAddresses, writer, transactionKId);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void RemoveIfFinished(RequestProxy requestProxy)
        {
            if (requestProxy != null)
            {
                if (requestProxy.IsAllRequestsSent && requestProxy.IsAllResponsesReceived)
                {
                    var proxies = requestProxy.GetAllProxie();
                    for (int i = 0; i < proxies.Count; i++)
                    {
                        clientTransactionIds.Remove(proxies[i].TransactionId);
                    }

                    requestProxy.Dispose();
                    requestProxyes.Remove(requestProxy.ServerTransactionId);
                }
            }
        }