Beispiel #1
0
 public Message WaitMessage(Message.Categories type, CancellationToken ct)
 {
     try
     {
         return(PendingInboundMessages.Take(ct));
     }
     catch (ThreadAbortException exc)
     {
         // Silo may be shutting-down, so downgrade to verbose log
         logger.Debug(ErrorCode.ProxyClient_ThreadAbort, "Received thread abort exception -- exiting. {0}", exc);
         Thread.ResetAbort();
         return(null);
     }
     catch (OperationCanceledException exc)
     {
         logger.Debug(ErrorCode.ProxyClient_OperationCancelled, "Received operation cancelled exception -- exiting. {0}", exc);
         return(null);
     }
     catch (ObjectDisposedException exc)
     {
         logger.Debug(ErrorCode.ProxyClient_OperationCancelled, "Received Object Disposed exception -- exiting. {0}", exc);
         return(null);
     }
     catch (InvalidOperationException exc)
     {
         logger.Debug(ErrorCode.ProxyClient_OperationCancelled, "Received Invalid Operation exception -- exiting. {0}", exc);
         return(null);
     }
     catch (Exception ex)
     {
         logger.Error(ErrorCode.ProxyClient_ReceiveError, "Unexpected error getting an inbound message", ex);
         return(null);
     }
 }
        public Message WaitMessage(Message.Categories type, CancellationToken ct)
        {
            try
            {
                Message msg = PendingInboundMessages.Take();
#if TRACK_DETAILED_STATS
                if (StatisticsCollector.CollectQueueStats)
                {
                    queueTracking.OnDeQueueRequest(msg);
                }
#endif
                return(msg);
            }
            catch (ThreadAbortException tae)
            {
                // Silo may be shutting-down, so downgrade to verbose log
                logger.Verbose(ErrorCode.ProxyClient_ThreadAbort, "Received thread abort exception -- exiting. {0}", tae);
                Thread.ResetAbort();
                return(null);
            }
            catch (OperationCanceledException oce)
            {
                logger.Verbose(ErrorCode.ProxyClient_OperationCancelled, "Received operation cancelled exception -- exiting. {0}", oce);
                return(null);
            }
            catch (Exception ex)
            {
                logger.Error(ErrorCode.ProxyClient_ReceiveError, "Unexpected error getting an inbound message", ex);
                return(null);
            }
        }
 internal IncomingMessageAgent(Message.Categories cat, IMessageCenter mc, ActivationDirectory ad, OrleansTaskScheduler sched, Dispatcher dispatcher) :
     base(cat.ToString())
 {
     category = cat;
     messageCenter = mc;
     directory = ad;
     scheduler = sched;
     this.dispatcher = dispatcher;
     OnFault = FaultBehavior.RestartOnFault;
 }
 internal IncomingMessageAgent(Message.Categories cat, IMessageCenter mc, ActivationDirectory ad, OrleansTaskScheduler sched, Dispatcher dispatcher) :
     base(cat.ToString())
 {
     category        = cat;
     messageCenter   = mc;
     directory       = ad;
     scheduler       = sched;
     this.dispatcher = dispatcher;
     OnFault         = FaultBehavior.RestartOnFault;
 }
Beispiel #5
0
 /// <inheritdoc />
 public Message WaitMessage(Message.Categories type)
 {
     try
     {
         return(this.messageQueues[(int)type].Take());
     }
     catch (InvalidOperationException)
     {
         return(null);
     }
 }
Beispiel #6
0
        public Message WaitMessage(Message.Categories type, CancellationToken ct)
        {
            try
            {
                if (ct.IsCancellationRequested)
                {
                    return(null);
                }

                // Don't pass CancellationToken to Take. It causes too much spinning.
                Message msg = PendingInboundMessages.Take();
#if TRACK_DETAILED_STATS
                if (StatisticsCollector.CollectQueueStats)
                {
                    queueTracking.OnDeQueueRequest(msg);
                }
#endif
                return(msg);
            }
#if !NETSTANDARD
            catch (ThreadAbortException exc)
            {
                // Silo may be shutting-down, so downgrade to verbose log
                logger.Verbose(ErrorCode.ProxyClient_ThreadAbort, "Received thread abort exception -- exiting. {0}", exc);
                Thread.ResetAbort();
                return(null);
            }
#endif
            catch (OperationCanceledException exc)
            {
                logger.Verbose(ErrorCode.ProxyClient_OperationCancelled, "Received operation cancelled exception -- exiting. {0}", exc);
                return(null);
            }
            catch (ObjectDisposedException exc)
            {
                logger.Verbose(ErrorCode.ProxyClient_OperationCancelled, "Received Object Disposed exception -- exiting. {0}", exc);
                return(null);
            }
            catch (InvalidOperationException exc)
            {
                logger.Verbose(ErrorCode.ProxyClient_OperationCancelled, "Received Invalid Operation exception -- exiting. {0}", exc);
                return(null);
            }
            catch (Exception ex)
            {
                logger.Error(ErrorCode.ProxyClient_ReceiveError, "Unexpected error getting an inbound message", ex);
                return(null);
            }
        }
Beispiel #7
0
 /// <inheritdoc />
 public Message WaitMessage(Message.Categories type, CancellationToken cancellationToken)
 {
     try
     {
         return(this.messageQueues[(int)type].Take(cancellationToken));
     }
     catch (OperationCanceledException)
     {
         return(null);
     }
     catch (InvalidOperationException)
     {
         return(null);
     }
 }
Beispiel #8
0
        public Message WaitMessage(Message.Categories type)
        {
            try
            {
                Message msg = messageQueues[(int)type].Take();

#if TRACK_DETAILED_STATS
                if (StatisticsCollector.CollectQueueStats)
                {
                    queueTracking[(int)msg.Category].OnDeQueueRequest(msg);
                }
#endif
                return(msg);
            }
            catch (InvalidOperationException)
            {
                return(null);
            }
        }
Beispiel #9
0
 internal IncomingMessageAgent(
     Message.Categories cat,
     IMessageCenter mc,
     ActivationDirectory ad,
     OrleansTaskScheduler sched,
     Dispatcher dispatcher,
     MessageFactory messageFactory,
     ExecutorService executorService,
     ILoggerFactory loggerFactory) :
     base(cat.ToString(), executorService, loggerFactory)
 {
     category            = cat;
     messageCenter       = mc;
     directory           = ad;
     scheduler           = sched;
     this.dispatcher     = dispatcher;
     this.messageFactory = messageFactory;
     OnFault             = FaultBehavior.RestartOnFault;
 }
 internal IncomingMessageAgent(
     Message.Categories cat,
     IMessageCenter mc,
     ActivationDirectory ad,
     OrleansTaskScheduler sched,
     Dispatcher dispatcher,
     MessageFactory messageFactory,
     ILoggerFactory loggerFactory) :
     base(cat.ToString(), loggerFactory)
 {
     category            = cat;
     messageCenter       = mc;
     directory           = ad;
     scheduler           = sched;
     this.dispatcher     = dispatcher;
     this.messageFactory = messageFactory;
     OnFault             = FaultBehavior.RestartOnFault;
     messageCenter.RegisterLocalMessageHandler(cat, ReceiveMessage);
 }
Beispiel #11
0
 public void RegisterLocalMessageHandler(Message.Categories category, Action <Message> handler)
 {
     this.messageHandlers[(int)category] = handler;
 }
Beispiel #12
0
 public ChannelReader <Message> GetReader(Message.Categories type) => PendingInboundMessages.Reader;
Beispiel #13
0
 public Message WaitMessage(Message.Categories type, CancellationToken ct)
 {
     return(InboundQueue.WaitMessage(type));
 }
Beispiel #14
0
 public void RegisterLocalMessageHandler(Message.Categories category, Action <Message> handler)
 {
 }
 public ChannelReader <Message> GetReader(Message.Categories type) => this.messageQueues[(int)type].Reader;