Beispiel #1
0
        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);
                    }
                }
            }
        }
Beispiel #3
0
    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);
        }
    }
Beispiel #4
0
        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());
 }
Beispiel #6
0
 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);
     }
 }
Beispiel #7
0
        public void UnRegister(int key, MsgEvent fun)
        {
            EventInfo wrap;

            if (EventIDToAction.TryGetValue(key, out wrap))
            {
                wrap.Remove(fun);
            }
        }
Beispiel #8
0
        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>());
     }
 }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        public bool Add(MsgEvent listener)
        {
            if (mEventList == null)
            {
                mEventList = new LinkedList <MsgEvent>();
            }

            if (mEventList.Contains(listener))
            {
                return(false);
            }

            mEventList.AddLast(listener);
            return(true);
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
    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);
    }
Beispiel #14
0
        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);
        }
Beispiel #15
0
 public static void UnRegisterEvent(int key, MsgEvent fun)
 {
     Instance.UnRegister(key, fun);
 }
Beispiel #16
0
 public void RegisterEvent(int msgID, MsgEvent msgEvent)
 {
     AllRegisterID.Add(msgID);
     mMsgManager.Register(ManagerId + msgID, msgEvent);
 }
Beispiel #17
0
 public void SendMsg(T data)
 {
     MsgEvent.Send("s1", data, this);
 }
Beispiel #18
0
 public Module1()
 {
     MsgEvent.Receive("s2", saveData, this);
     MsgEvent.Receive("s3", showData, this);
 }
Beispiel #19
0
        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();
        }
Beispiel #20
0
 public Module2()
 {
     MsgEvent.Receive("s1", saveData, this);
     MsgEvent.Receive("s2", saveData, this);
 }
Beispiel #21
0
 public Module3()
 {
     MsgEvent.Receive("s1", saveData, this);
     MsgEvent.Receive("s2", saveData, this, true);
     MsgEvent.Receive("s3", saveData, this, true);
 }
Beispiel #22
0
    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();
                        }
                    }
                }
            }
        }
    }
Beispiel #23
0
        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);
        }
Beispiel #24
0
 public void UnRegisterEvent(int msgID, MsgEvent msgEvent)
 {
     AllRegisterID.Remove(msgID);
     mMsgManager.UnRegister(ManagerId + msgID, msgEvent);
 }
Beispiel #25
0
 /// <summary>
 /// 取消事件的注册
 /// </summary>
 /// <param name="msgID"></param>
 /// <param name="msgEvent"></param>
 public void UnRegisterEvent(int msgID, MsgEvent msgEvent)
 {
     UIManager.Instance.UnRegisterEvent(msgID, msgEvent);
 }
Beispiel #26
0
 internal static void SendMsg(string msg)
 {
     MsgEvent?.Invoke(msg);
 }
 public void rec(MsgEvent msg, EndPoint sender)
 {
     OnRecieve(msg, sender);
 }
Beispiel #28
0
 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
 }
Beispiel #30
0
    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;
        }
    }