TestAmqpBroker.TestAmqpBroker.BeginOpenLink C# (CSharp) 메소드

BeginOpenLink() 공개 메소드

public BeginOpenLink ( AmqpLink link, System.TimeSpan timeout, AsyncCallback callback, object state ) : IAsyncResult
link AmqpLink
timeout System.TimeSpan
callback AsyncCallback
state object
리턴 IAsyncResult
        public IAsyncResult BeginOpenLink(AmqpLink link, TimeSpan timeout, AsyncCallback callback, object state)
        {
            if (link.IsReceiver && link.Settings.Target is Coordinator)
            {
                this.txnManager.AddCoordinator((ReceivingAmqpLink)link);
            }
            else
            {
                string address = link.IsReceiver ?
                    ((Target)link.Settings.Target).Address.ToString() :
                    ((Source)link.Settings.Source).Address.ToString();

                TestQueue queue;
                if (!this.queues.TryGetValue(address, out queue))
                {
                    if (!this.implicitQueue)
                    {
                        throw new AmqpException(AmqpErrorCode.NotFound, string.Format("Node '{0}' not found", address));
                    }

                    queue = new TestQueue(this);
                    this.queues.Add(address, queue);
                    link.Closed += (s, e) => this.queues.Remove(address);
                }

                queue.CreateClient(link);
            }

            return new CompletedAsyncResult(callback, state);
        }