The listener link provides non-blocking methods that can be used by brokers/listener applications.
Inheritance: Link
Beispiel #1
0
 internal DispositionContext(ListenerLink link, Message message, DeliveryState deliveryState, bool settled)
     : base(link, message)
 {
     this.Settled = settled;
 }
Beispiel #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;
 }
Beispiel #3
0
            static void DispatchMessage(ListenerLink link, Message message, DeliveryState deliveryState, object state)
            {
                MessageContext context = new MessageContext(link, message);

                ((MessageProcessor)state).processor.Process(context);
            }
Beispiel #4
0
 protected Context(ListenerLink link, Message message)
 {
     this.Link    = link;
     this.Message = message;
 }
Beispiel #5
0
 internal RequestContext(ListenerLink requestLink, ListenerLink responseLink, Message request)
     : base(requestLink, request)
 {
     this.responseLink = responseLink;
 }
Beispiel #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);
            }
        }
Beispiel #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;
 }
Beispiel #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;
 }
Beispiel #10
0
 internal AttachContext(ListenerLink link, Attach attach)
 {
     this.Link   = link;
     this.Attach = attach;
 }
Beispiel #11
0
 internal FlowContext(ListenerLink link, int messages, Fields properties)
 {
     this.Link = link;
     this.Messages = messages;
     this.Properties = properties;
 }
Beispiel #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;
 }
Beispiel #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);
 }
Beispiel #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;
 }
Beispiel #15
0
 internal FlowContext(ListenerLink link, int messages, Fields properties)
 {
     this.Link       = link;
     this.Messages   = messages;
     this.Properties = properties;
 }
 internal MessageContext(ListenerLink link, Message message)
     : base(link, message)
 {
     this.DeliveryState = message.Delivery.State;
 }
        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;
            }
        }
 internal RequestContext(ListenerLink requestLink, ListenerLink responseLink, Message request)
     : base(requestLink, request)
 {
     this.responseLink = responseLink;
 }
Beispiel #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;
 }
Beispiel #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)
 {
 }
Beispiel #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)
 {
 }
Beispiel #23
0
 internal MessageContext(ListenerLink link, Message message)
     : base(link, message)
 {
 }
Beispiel #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)
 {
 }
 /// <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;
 }
Beispiel #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)
 {
 }
Beispiel #27
0
        public bool TryAdd(ListenerLink link)
        {
            Key key = new Key(this.containerId, link);

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

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