public static void ExecuteAsync(object x) { NFIActor xActor = (NFIActor)x; if (null != xActor) { xActor.Execute(); } }
public override void Execute() { NFGUID xID = null; while (mxWaitScheduler.TryDequeue(out xID)) { NFIActor xActor = mxActorMng.GetActor(xID); if (null != xActor && xActor.GetNumQueuedMessages() > 0) { //分配一个空闲的thread去隔天actor执行任务 Task.Factory.StartNew(NFCActor.ExecuteAsync, xActor); } } }
public override bool ReleaseActor(NFIDENTID xID) { if (null == xID) { return(false);; } NFIActor xActor = null; if (mxActorDic.TryRemove(xID, out xActor)) { ReleaseActor(xActor); } return(true); }
public override NFIActor GetActor(NFIDENTID xID) { if (null == xID) { return(null); } NFIActor xActor = null; if (mxActorDic.TryGetValue(xID, out xActor)) { return(xActor); } return(null); }
public override bool SendMsg(NFIDENTID address, NFIDENTID from, NFIActorMessage xMessage) { if (null == address || null == xMessage) { return(false);; } NFIActor xActor = GetActor(address); if (null != xActor) { return(xActor.PushMessages(from, xMessage)); } return(false); }
public override bool RegisterHandler(NFIDENTID xID, NFIActor.Handler handler) { if (null == xID || null == handler) { return(false); } NFIActor xActor = GetActor(xID); if (null != xActor) { xActor.RegisterHandler(handler); return(true); } return(false); }
/////////////////////////////////////////////////////// private bool ReleaseActor(NFIActor xActor) { if (null == xActor) { return(false); } NFIActorMessage xMessage = new NFIActorMessage(); xMessage.bAsync = false;//同步消息 xMessage.eType = NFIActorMessage.EACTOR_MESSAGE_ID.EACTOR_BEFORE_SHUT; xActor.PushMessages(null, xMessage); xMessage.eType = NFIActorMessage.EACTOR_MESSAGE_ID.EACTOR_SHUT; xActor.PushMessages(null, xMessage); return(true); }