/// <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)); }
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)); }
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; } } }
/// <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); }