Exemplo n.º 1
0
 private static bool MarkedSynchronized(MessageHandlerTuple tuple)
 {
     //cache it later
     return
         (tuple
          .Message
          .GetType()
          .GetCustomAttributes(typeof(SynchronizedAttribute), false)
          .Length > 0);
 }
Exemplo n.º 2
0
        protected override void Invoke(ref MessageHandlerTuple tuple)
        {
            MessageHandlerTuple handlerTuple = tuple;
            var scheduler = _preserveOrderScheduler;

            if (MarkedSynchronized(tuple))
            {
                scheduler = SingleThreadScheduler.Instance;
            }
            Task.Factory.StartNew(() => InternalInvoke(handlerTuple), CancellationToken.None, TaskCreationOptions.None, scheduler);
        }
 public virtual bool TryInvoke(ref MessageHandlerTuple tuple)
 {
     if (HandlerInvoker.IsHandler(ref tuple))
     {
         for (int i = 0; i < _rules.Length; i++)
         {
             if (_rules[i].CanDispatch(ref tuple))
             {
                 Invoke(ref tuple);
                 return true;
             }
         }
     }
     return false;
 }
Exemplo n.º 4
0
 private void InternalInvoke(MessageHandlerTuple handlerTuple)
 {
     base.Invoke(ref handlerTuple);
 }
 protected virtual void Invoke(ref MessageHandlerTuple tuple)
 {
     HandlerInvoker.Invoke(ref tuple);
 }
 public bool Equals(MessageHandlerTuple other)
 {
     return ReferenceEquals(Message, other.Message) && ReferenceEquals(Handler, other.Handler);
 }