The listener link provides non-blocking methods that can be used by brokers/listener applications.
Inheritance: Link
示例#1
0
 internal DispositionContext(ListenerLink link, Message message, DeliveryState deliveryState, bool settled)
     : base(link, message)
 {
     this.Settled = settled;
 }
示例#2
0
 /// <summary>
 /// Initializes a context object.
 /// </summary>
 /// <param name="link">The link where the message was received.</param>
 /// <param name="message">The received message.</param>
 protected Context(ListenerLink link, Message message)
 {
     this.Link = link;
     this.Message = message;
     this.state = ContextState.Active;
 }
示例#3
0
            static void DispatchMessage(ListenerLink link, Message message, DeliveryState deliveryState, object state)
            {
                MessageContext context = new MessageContext(link, message);

                ((MessageProcessor)state).processor.Process(context);
            }
示例#4
0
 protected Context(ListenerLink link, Message message)
 {
     this.Link    = link;
     this.Message = message;
 }
示例#5
0
 internal RequestContext(ListenerLink requestLink, ListenerLink responseLink, Message request)
     : base(requestLink, request)
 {
     this.responseLink = responseLink;
 }
示例#6
0
 /// <summary>
 /// Initializes a context object.
 /// </summary>
 /// <param name="link">The link where the message was received.</param>
 /// <param name="message">The received message.</param>
 protected Context(ListenerLink link, Message message)
 {
     this.Link    = link;
     this.Message = message;
     this.state   = ContextState.Active;
 }
        public Task<ReceiveContext> GetMessageAsync(ListenerLink link)
        {
            lock (this.messages)
            {
                ReceiveContext context = null;
                if (this.messages.Count > 0)
                {
                    context = new ReceiveContext(link, this.messages.Dequeue());
                }

                return Task.FromResult(context);
            }
        }
示例#8
0
 /// <summary>
 /// Initializes a TargetLinkEndpoint object
 /// </summary>
 /// <param name="messageProcessor">The associated message processor.</param>
 /// <param name="link">The listener link.</param>
 public TargetLinkEndpoint(IMessageProcessor messageProcessor, ListenerLink link)
 {
     this.messageProcessor = messageProcessor;
     this.link = link;
 }
示例#9
0
 /// <summary>
 /// Initializes a TargetLinkEndpoint object
 /// </summary>
 /// <param name="messageProcessor">The associated message processor.</param>
 /// <param name="link">The listener link.</param>
 public TargetLinkEndpoint(IMessageProcessor messageProcessor, ListenerLink link)
 {
     this.messageProcessor = messageProcessor;
     this.link             = link;
 }
示例#10
0
 internal AttachContext(ListenerLink link, Attach attach)
 {
     this.Link   = link;
     this.Attach = attach;
 }
示例#11
0
 internal FlowContext(ListenerLink link, int messages, Fields properties)
 {
     this.Link = link;
     this.Messages = messages;
     this.Properties = properties;
 }
示例#12
0
 /// <summary>
 /// Initializes a SourceLinkEndpoint object
 /// </summary>
 /// <param name="messageSource">The associated message source.</param>
 /// <param name="link">The listener link.</param>
 public SourceLinkEndpoint(IMessageSource messageSource, ListenerLink link)
 {
     this.syncRoot = new object();
     this.messageSource = messageSource;
     this.link = link;
 }
示例#13
0
 public MonitoringLinkEndpoint(ListenerLink link)
 {
     this.link = link;
     this.link.Closed += this.OnLinkClosed;
     this.random = new Random();
     this.timer = new Timer(OnTimer, this, 1000, 1000);
 }
示例#14
0
 /// <summary>
 /// Initializes a context object.
 /// </summary>
 /// <param name="link">The link where the message was received.</param>
 /// <param name="message">The received message.</param>
 protected Context(ListenerLink link, Message message)
 {
     this.Link = link;
     this.Message = message;
 }
示例#15
0
 internal FlowContext(ListenerLink link, int messages, Fields properties)
 {
     this.Link       = link;
     this.Messages   = messages;
     this.Properties = properties;
 }
示例#16
0
 internal MessageContext(ListenerLink link, Message message)
     : base(link, message)
 {
     this.DeliveryState = message.Delivery.State;
 }
示例#17
0
        public Task<ReceiveContext> GetMessageAsync(ListenerLink link)
        {
            lock (this.messages)
            {
                ReceiveContext context = null;
                if (this.messages.Count > 0)
                {
                    context = new ReceiveContext(link, this.messages.Dequeue());
                }

                var tcs = new TaskCompletionSource<ReceiveContext>();
                tcs.SetResult(context);
                return tcs.Task;
            }
        }
示例#18
0
 internal RequestContext(ListenerLink requestLink, ListenerLink responseLink, Message request)
     : base(requestLink, request)
 {
     this.responseLink = responseLink;
 }
示例#19
0
 public SlowLinkEndpoint(AttachContext attachContext)
 {
     this.link = attachContext.Link;
     this.cts = new CancellationTokenSource();
     link.Closed += (o, e) => this.cts.Cancel();
     attachContext.Complete(this, 0);
     this.link.SetCredit(1, false, false);
 }
 internal DispositionContext(ListenerLink link, Message message, DeliveryState deliveryState, bool settled)
     : base(link, message)
 {
     this.Settled = settled;
 }
示例#21
0
 /// <summary>
 /// The method is called when the link is closed. Derived classes may override this method to
 /// perform necessary cleanup work.
 /// </summary>
 /// <param name="link">The link that is being closed.</param>
 /// <param name="error">The error, if any, that causes the link to be closed.</param>
 public virtual void OnLinkClosed(ListenerLink link, Error error)
 {
 }
示例#22
0
 /// <summary>
 /// The method is called when the link is closed. Derived classes may override this method to
 /// perform necessary cleanup work.
 /// </summary>
 /// <param name="link">The link that is being closed.</param>
 /// <param name="error">The error, if any, that causes the link to be closed.</param>
 public virtual void OnLinkClosed(ListenerLink link, Error error)
 {
 }
示例#23
0
 internal MessageContext(ListenerLink link, Message message)
     : base(link, message)
 {
 }
示例#24
0
 /// <summary>
 /// Initializes a ReceiveContext object.
 /// </summary>
 /// <param name="link">The listener link to send out the message.</param>
 /// <param name="message">The message to send out.</param>
 public ReceiveContext(ListenerLink link, Message message)
     : base(link, message)
 {
 }
示例#25
0
 /// <summary>
 /// Initializes a SourceLinkEndpoint object
 /// </summary>
 /// <param name="messageSource">The associated message source.</param>
 /// <param name="link">The listener link.</param>
 public SourceLinkEndpoint(IMessageSource messageSource, ListenerLink link)
 {
     this.syncRoot      = new object();
     this.messageSource = messageSource;
     this.link          = link;
 }
示例#26
0
 /// <summary>
 /// Initializes a ReceiveContext object.
 /// </summary>
 /// <param name="link">The listener link to send out the message.</param>
 /// <param name="message">The message to send out.</param>
 public ReceiveContext(ListenerLink link, Message message)
     : base(link, message)
 {
 }
示例#27
0
        public bool TryAdd(ListenerLink link)
        {
            Key key = new Key(this.containerId, link);

            return(this.links.TryAdd(key, link));
        }
示例#28
0
 internal AttachContext(ListenerLink link, Attach attach)
 {
     this.Link = link;
     this.Attach = attach;
 }
示例#29
0
        void OnLinkClosed(AmqpObject sender, Error error)
        {
            ListenerLink link = (ListenerLink)sender;

            this.linkCollection.Remove(link);
        }
示例#30
0
 internal MessageContext(ListenerLink link, Message message)
     : base(link, message)
 {
     this.DeliveryState = message.Delivery.State;
 }