Example #1
0
 /// <summary>
 /// 执行一个QQActor,返回是否继续下一个actor
 /// </summary>
 /// <param name="actor"></param>
 /// <returns></returns>
 private bool DispatchAction(IQQActor actor)
 {
     if (actor == null)
     {
         return(true);
     }
     actor.Execute();
     return(!(actor is ExitActor));
 }
Example #2
0
        private void PushActor(IQQActor actor, int actorQueuesIndex)
        {
            var actorQueue = _actorQueues.GetOrAdd(actorQueuesIndex, (i) =>
            {
                var col  = new BlockingCollection <IQQActor>();
                var task = Task.Factory.StartNew(() => Run(col), _cts.Token);
                return(new Tuple <BlockingCollection <IQQActor>, Task>(col, task));
            });

            actorQueue.Item1.Add(actor);
        }
 /// <summary>
 /// 执行一个QQActor,返回是否继续下一个actor
 /// </summary>
 /// <param name="actor"></param>
 /// <returns></returns>
 private bool DispatchAction(IQQActor actor)
 {
     if (actor == null)
     {
         return(true);
     }
     if (_asyncExcute)
     {
         actor.ExecuteAsync();
     }
     else
     {
         actor.Execute();
     }
     return(!(actor is ExitActor));
 }
Example #4
0
        public void PushActor(IQQActor actor)
        {
            switch (actor.Type)
            {
            case QQActorType.PollMsgActor:
            {
                var index = _random.Next(0, _pollThreadNum);
                PushActor(actor, index);
                break;
            }

            default:
            {
                PushActor(actor, -1);
                break;
            }
            }
        }
        public void PushActor(IQQActor actor)
        {
            switch (actor.Type)
            {
                case QQActorType.PollMsgActor:
                {
                    var index = _random.Next(0, _pollThreadNum);
                    PushActor(actor, index);
                    break;
                }

                default:
                {
                    PushActor(actor, -1);
                    break;
                }
            }
        }
Example #6
0
 /// <summary>
 /// 放入一个QQActor到队列,将会在线程执行器里面执行
 /// </summary>
 /// <param name="actor"></param>
 public void PushActor(IQQActor actor)
 {
     _actorDispatcher.PushActor(actor);
 }
 public void PushActor(IQQActor actor)
 {
     _actorQueue.Add(actor);
 }
 private void PushActor(IQQActor actor, int actorQueuesIndex)
 {
     var actorQueue = _actorQueues.GetOrAdd(actorQueuesIndex, (i) =>
     {
         var col = new BlockingCollection<IQQActor>();
         var task = Task.Run(() => Run(col), _cts.Token);
         return new Tuple<BlockingCollection<IQQActor>, Task>(col, task);
     });
     actorQueue.Item1.Add(actor);
 }
 /// <summary>
 /// 执行一个QQActor,返回是否继续下一个actor
 /// </summary>
 /// <param name="actor"></param>
 /// <returns></returns>
 private bool DispatchAction(IQQActor actor)
 {
     if (actor == null) return true;
     actor.Execute();
     return !(actor is ExitActor);
 }