public async Task Test_multi_event_publish_succeed() { var container = new ServiceContainer(); container.Register <IDoSomething, DoSomething>(); //mock and register IEventHandler<MsgEvent> Mock <IEventHandler <MsgEvent> > mockMsgEventHandler = new Mock <IEventHandler <MsgEvent> >(); container.Register <IEventHandler <MsgEvent> >(factory => mockMsgEventHandler.Object); //mock and register IEventHandler<LostEvent> Mock <IEventHandler <LostEvent> > mockLostEventHandler = new Mock <IEventHandler <LostEvent> >(); container.Register <IEventHandler <LostEvent> >(factory => mockLostEventHandler.Object); var testMsgEvent = new MsgEvent() { Message = "test_msg" }; var testLostEvent = new LostEvent() { LostInfo = "test_LostInfo" }; IEventBus eventBus = new EventBus(this.GenerateEventHandleProvider(container)); await eventBus.Publish(testMsgEvent); await eventBus.Publish(testLostEvent); await eventBus.Publish(testLostEvent); mockMsgEventHandler.Verify(obj => obj.Handle(It.Is <MsgEvent>(msgEvent => msgEvent.Message == testMsgEvent.Message)), Times.Once); mockLostEventHandler.Verify(obj => obj.Handle(It.Is <LostEvent>(lostEvent => lostEvent.LostInfo == testLostEvent.LostInfo)), Times.Exactly(2)); }
protected override void OnRecieve(MsgEvent msg, EndPoint sender) { if (msg.msg.GetType() == typeof(PlayerData)) { PlayerData pData = (PlayerData)msg.msg; if (pData.instanceID == InstanceID && pData.playerID == OwnerID) { targetPos = pData.pos; targetRot = pData.rot; targetScale = pData.scale; if (prediction) { Vector3 predictedDelta = new Vector3 { x = pData.pos.x - lastRealPos.x, y = pData.pos.y - lastRealPos.y, z = pData.pos.z - lastRealPos.z }; lastRealPos = pData.pos; targetPos += predictedDelta * (ping / 1000); } } } }
public string UpdateChat(string userFrom, string user) { using (SwapEntities ent = new SwapEntities()) { var newMsg = from msg in ent.MsgEvents join msgrec in ent.RecMessages on msg.UId equals msgrec.UId orderby msg.When ascending where msg.UserTo == user && msg.UserFrom == userFrom && msg.IsRead == false && msg.MsgType == "QM" select new { msg.UId, msg.When, msgrec.Message, msg.IsRead }; string xmlMessages = "<rss version='2.0'>"; int count = 0; var getMsgEvent = new MsgEvent(); foreach (var m in newMsg) { xmlMessages = xmlMessages + "<message><time>" + m.When.ToShortTimeString() + "</time>" + "<date>" + m.When.ToShortDateString() + "</date>" + "<string>" + m.Message + "</string></message>"; getMsgEvent = (from me in ent.MsgEvents where me.UId == m.UId select me).SingleOrDefault(); getMsgEvent.IsRead = true; count++; } ent.SaveChanges(); xmlMessages = xmlMessages + "</rss>"; return(xmlMessages); } }
public async Task Test_publish_MsgEvent_and_LostEvent() { var container = new ServiceContainer(); Mock <IDoSomething> mockDoSomething = new Mock <IDoSomething>(); container.Register <IDoSomething>(factory => mockDoSomething.Object); var msgEvent = new MsgEvent() { Message = "你好" }; var lostEvent = new LostEvent() { LostInfo = "迷失" }; SampleEventIOCFactory.RegisterEventHandlersFromAssemblies(container, () => new PerContainerLifetime(), this.GetType().Assembly); IEventBus eventBus = new EventBus(this.GenerateEventHandleProvider(container)); await eventBus.Publish(msgEvent); await eventBus.Publish(lostEvent); mockDoSomething.Verify(obj => obj.JustDoIt(It.Is <string>(text => text == msgEvent.Message)), Times.Once); mockDoSomething.Verify(obj => obj.JustDoIt(It.Is <string>(text => text == lostEvent.LostInfo)), Times.Exactly(2)); }
/// <summary> /// 开启服务 /// </summary> /// <returns></returns> public bool StartServer() { asynTcp.AsyncDataAcceptedEvent += AsynTcp_AsyncDataAcceptedEvent; asynTcp.AsyncSocketAcceptEvent += AsynTcp_AsyncSocketAcceptEvent; asynTcp.AsyncSocketClosedEvent += AsynTcp_AsyncSocketClosedEvent; MsgEvent?.Invoke(); StateEvent?.Invoke(string.Format("服务端: {0}:{1} 开始监听!!!", address == "" ? "LocalHost" : address, point.ToString())); return(asynTcp.AsyncOpen()); }
void OnTriggerEnter(Collider collider) { Debug.LogFormat("{0} enter {1}", collider.name, name); if (Core.Account.role.gameObject == collider.gameObject) { MsgEvent msg = new MsgEvent(MsgEvent.Type.Pickup, (int)id); Core.Network.Send(msg); } }
public void UnRegister(int key, MsgEvent fun) { EventInfo wrap; if (EventIDToAction.TryGetValue(key, out wrap)) { wrap.Remove(fun); } }
public void Remove(MsgEvent listener) { if (mEventList == null) { return; } mEventList.Remove(listener); }
public static IEnumerable <MsgEventHandler> GetMsgEventHandlers() { if (MsgEvent != null) { return(from d in MsgEvent.GetInvocationList() select(MsgEventHandler) d); } else { return(new List <MsgEventHandler>()); } }
public bool DispatchMessage(string PlayerName, string Message, bool CheckExist) { if (CheckExist && !HasPlayer(PlayerName)) { return(false); } foreach (OnMessage MsgEvent in OnMessages.ToArray()) { MsgEvent.Invoke(this, PlayerName, Message, Environment.TickCount); } return(true); }
public bool Add(MsgEvent listener) { if (mEventList == null) { mEventList = new LinkedList <MsgEvent>(); } if (mEventList.Contains(listener)) { return(false); } mEventList.AddLast(listener); return(true); }
public bool Register(int key, MsgEvent fun) { var kv = key; EventInfo wrap; if (!EventIDToAction.TryGetValue(kv, out wrap)) { wrap = new EventInfo(); EventIDToAction.Add(kv, wrap); } if (wrap.Add(fun)) { return(true); } AFLogger.d("Already Register Same Event:" + key); return(false); }
public void sendUnitEvent(int evt, object param, bool sync = false) { if (!isState(UnitState.Alive)) { return; } onEvent(evt, param); if (!sync) { return; } MsgEvent msg = new MsgEvent(); msg.guid = guid; msg.evt = evt; msg.param = param == null?"":param.ToString(); msg.sender = guid; sendMsg((short)MyMsgId.Event, msg); }
public bool Fire(int key, MsgInfo param) { if (mEventList == null) { return(false); } var next = mEventList.First; MsgEvent call = null; LinkedListNode <MsgEvent> nextCache = null; while (next != null) { call = next.Value; nextCache = next.Next; call(key, param); next = next.Next ?? nextCache; } return(true); }
public static void UnRegisterEvent(int key, MsgEvent fun) { Instance.UnRegister(key, fun); }
public void RegisterEvent(int msgID, MsgEvent msgEvent) { AllRegisterID.Add(msgID); mMsgManager.Register(ManagerId + msgID, msgEvent); }
public void SendMsg(T data) { MsgEvent.Send("s1", data, this); }
public Module1() { MsgEvent.Receive("s2", saveData, this); MsgEvent.Receive("s3", showData, this); }
static void Main(string[] args) { //初始化模块1,触发事件IntroduceMe Module1 <D1> m1 = new Module1 <D1>(); m1.IntroduceMe(); //初始化模块2,3 Module2 <D2> m2 = new Module2 <D2>(); Module3 <D1> m3 = new Module3 <D1>(); //每个模块分别发送消息 m1.SendMsg(new D1() { id = "d1", num = 1000.0001 }); m2.SendMsg(new D2() { code = 900, name = "tt11" }); m3.SendMsg(new D1() { id = "d2", Lyrs = { 1, 3, 4, 5, 6, 7 }, num = 0.99998 }); m1.SendMsg(new D1() { id = "d1", num = 1000.0001 }); m2.SendMsg(new D2() { code = 900, name = "tt11" }); m3.SendMsg(new D1() { id = "d2", Lyrs = { 1, 3, 4, 5, 6, 7 }, num = 0.99998 }); m1.SendMsg(new D1() { id = "d1", num = 1000.0001 }); m2.SendMsg(new D2() { code = 900, name = "tt11" }); m3.SendMsg(new D1() { id = "d2", Lyrs = { 1, 3, 4, 5, 6, 7 }, num = 0.99998 }); //临时创建一个消息体,并将此消息发送到s1信道中 CustomArgs args1 = new CustomArgs("s1"); args1.ID = "p1111"; MsgEvent.Send(args1, null); //可根据此方法获取某一信道内的消息订阅者清单 MsgEventProvider provider = MsgEventFactory.EventsContainer.GetAllProvider("s1"); List <MsgReceiver> li = provider.Receivers; Console.ReadKey(); }
public Module2() { MsgEvent.Receive("s1", saveData, this); MsgEvent.Receive("s2", saveData, this); }
public Module3() { MsgEvent.Receive("s1", saveData, this); MsgEvent.Receive("s2", saveData, this, true); MsgEvent.Receive("s3", saveData, this, true); }
public void SendMsg(string userFrom, string userTo, string newMsg, string Type) { using (SwapEntities msgEnt = new SwapEntities()) { string msgFrom = userFrom; string msgTo = userTo; string msg = newMsg; string msgType = Type; Guid newId; if (msgTo != "") { if (msg != null && msg != "") { if (msgType == "QM") { var checkMsgnum = (from tbl in msgEnt.MsgEvents where tbl.UserFrom == msgFrom & tbl.UserTo == msgTo & tbl.IsRead == false select tbl).Count(); if (checkMsgnum == 0) { var checkLastMsgDate = (from tbl in msgEnt.MsgEvents orderby tbl.When descending where tbl.UserFrom == msgFrom & tbl.UserTo == msgTo & tbl.IsRead == true select tbl).FirstOrDefault(); if (checkLastMsgDate != null) { string today = DateTime.Now.ToShortDateString(); string lastMsgdate = checkLastMsgDate.When.ToShortDateString(); if (today != lastMsgdate) { UserClass uc = new UserClass(msgTo); UserClass ucm = new UserClass(msgFrom); string recipEmail = uc.PublicEmail; EmailUsersClass sndEmail = new EmailUsersClass(msgFrom); string body = sndEmail.PopulateBody(uc.PublicFirstName, "You have a new message from <b>" + ucm.PublicFirstName + "</b>, login at veSwap.com to" + " view and respond to this message!"); sndEmail.SendHtmlFormattedEmail(recipEmail, "New message from " + ucm.PublicFirstName + " at veSwap.com", body); } } } SentMessage msgSent = new SentMessage(); MsgEvent msgEvent = new MsgEvent(); newId = Guid.NewGuid(); msgEvent.UId = newId; msgEvent.When = DateTime.Now; msgEvent.UserFrom = msgFrom; msgEvent.UserTo = msgTo; msgEvent.MsgType = msgType; msgEvent.IsRead = false; msgSent.UId = newId; msgSent.IsRead = false; msgSent.Message = msg; msgEnt.AddToSentMessages(msgSent); msgEnt.AddToMsgEvents(msgEvent); msgEnt.SaveChanges(); } MsgEvent msgEventrec = new MsgEvent(); RecMessage msgRec = new RecMessage(); newId = Guid.NewGuid(); msgEventrec.UId = newId; msgEventrec.When = DateTime.Now; msgEventrec.UserFrom = msgFrom; msgEventrec.UserTo = msgTo; msgEventrec.MsgType = msgType; msgEventrec.IsRead = false; msgRec.UId = newId; msgRec.IsRead = false; msgRec.Message = msg; msgEnt.AddToRecMessages(msgRec); msgEnt.AddToMsgEvents(msgEventrec); msgEnt.SaveChanges(); if (msgType != "NM") { var updateContact = (from cnt in msgEnt.Contacts where cnt.UserTo == msgTo && cnt.UserFrom == msgFrom select cnt).SingleOrDefault(); if (updateContact == null) { Contact addContact = new Contact(); Guid contGuid = Guid.NewGuid(); addContact.Id = contGuid; addContact.UserTo = msgTo; addContact.UserFrom = msgFrom; addContact.LastReceived = DateTime.Now; msgEnt.AddToContacts(addContact); msgEnt.SaveChanges(); } else { updateContact.LastReceived = DateTime.Now; msgEnt.SaveChanges(); } var updateSntContact = (from snt in msgEnt.SentContacts where snt.UserTo == msgTo && snt.UserFrom == msgFrom select snt).SingleOrDefault(); if (updateSntContact == null) { SentContact addSntContact = new SentContact(); Guid sntcontGuid = Guid.NewGuid(); addSntContact.Id = sntcontGuid; addSntContact.UserTo = msgTo; addSntContact.UserFrom = msgFrom; addSntContact.LastSent = DateTime.Now; msgEnt.AddToSentContacts(addSntContact); msgEnt.SaveChanges(); } else { updateSntContact.LastSent = DateTime.Now; msgEnt.SaveChanges(); } } } } } }
private void showData(object sender, MsgEventArgs args) { Console.WriteLine(string.Format("我是:{1},收到{2}的消息,内容是:{0},showData", args.Data, "Module1", args.EventType)); MsgEvent.RemoveListener("s3", saveData, this); }
public void UnRegisterEvent(int msgID, MsgEvent msgEvent) { AllRegisterID.Remove(msgID); mMsgManager.UnRegister(ManagerId + msgID, msgEvent); }
/// <summary> /// 取消事件的注册 /// </summary> /// <param name="msgID"></param> /// <param name="msgEvent"></param> public void UnRegisterEvent(int msgID, MsgEvent msgEvent) { UIManager.Instance.UnRegisterEvent(msgID, msgEvent); }
internal static void SendMsg(string msg) { MsgEvent?.Invoke(msg); }
public void rec(MsgEvent msg, EndPoint sender) { OnRecieve(msg, sender); }
public static bool RegisterEvent(int key, MsgEvent fun) { return(Instance.Register(key, fun)); }
protected virtual void OnRecieve(MsgEvent msg, EndPoint sender) { //Function for users to hook into }
public IEnumerator Process() { switch (type) { case Type.Event: MsgEvent.Process(m_bytes); break; case Type.CreatePlayer: MsgCreatePlayer.Process(m_bytes); break; case Type.Account: MsgAccount.Process(m_bytes); break; case Type.ChangeMap: yield return(MsgChangeMap.Process(m_bytes)); break; case Type.EntityEnter: MsgEntityEnter.Process(m_bytes); break; case Type.EntityLeave: MsgEntityLeave.Process(m_bytes); break; case Type.Move: MsgMove.Process(m_bytes); break; case Type.Action: MsgAction.Process(m_bytes); break; case Type.Damage: MsgDamage.Process(m_bytes); break; case Type.Attribs: MsgAttribs.Process(m_bytes); break; case Type.Bag: MsgBag.Process(m_bytes); break; case Type.ItemOperation: MsgItemOperation.Process(m_bytes); break; case Type.Missions: MsgMissions.Process(m_bytes); break; default: break; } }