SendNodeMessage() static private method

static private SendNodeMessage ( int handle, NodeMessage msg ) : void
handle int
msg NodeMessage
return void
Exemplo n.º 1
0
        //------------------------------------------------------------------------------------------------------
        private bool FilterMessage(NodeMessage msg, int handle, uint seq)
        {
            bool isContinue = true;

            if (handle > 0)
            {
                if (msg.m_ID == 0)
                {
                    //这几个消息不进行数量统计
                }
                else
                {
                    GameFrameworkMessage.NodeMessageWithGuid msgWithGuid = msg.m_NodeHeader as GameFrameworkMessage.NodeMessageWithGuid;
                    if (null != msgWithGuid)
                    {
                        ulong guid = msgWithGuid.m_Guid;
                        isContinue = OperationMeasure.Instance.CheckOperation(msgWithGuid.m_Guid);
                        if (!isContinue)
                        {
                            NodeMessage retMsg = new NodeMessage(LobbyMessageDefine.TooManyOperations, guid);
                            NodeMessageDispatcher.SendNodeMessage(handle, retMsg);
                        }
                    }
                }
            }
            return(isContinue);
        }
Exemplo n.º 2
0
        private bool CheckBagCapacity(UserInfo user, TableMailInfoWrap info)
        {
            bool result = true;

            if (null == user || null == user.ItemBag ||
                null == info || null == info.m_Items)
            {
                return(result);
            }
            int ct   = info.m_Items.Count;
            int free = user.ItemBag.GetFreeCount();

            if (ct > free)
            {
                result = false;
            }
            NodeMessage        opMsg     = new NodeMessage(LobbyMessageDefine.Msg_LC_LackOfSpace, user.Guid);
            Msg_LC_LackOfSpace protoData = new Msg_LC_LackOfSpace();

            protoData.m_Succeed    = result;
            protoData.m_ReceiveNum = ct;
            protoData.m_FreeNum    = free;
            protoData.m_MailGuid   = info.Guid;
            opMsg.m_ProtoData      = protoData;
            NodeMessageDispatcher.SendNodeMessage(user.NodeName, opMsg);
            return(result);
        }
Exemplo n.º 3
0
 internal void NotifyAllUser(LobbyMessageDefine id, object msg)
 {
     UserServer.Instance.UserProcessScheduler.VisitUsers((UserInfo user) => {
         NodeMessage retMsg = new NodeMessage(id, user.Guid);
         retMsg.m_ProtoData = msg;
         NodeMessageDispatcher.SendNodeMessage(user.NodeName, retMsg);
     });
 }
Exemplo n.º 4
0
        internal void NotifyUser(ulong guid, LobbyMessageDefine id, object msg)
        {
            UserInfo user = GetUserInfo(guid);

            if (null != user)
            {
                NodeMessage retMsg = new NodeMessage(id, guid);
                retMsg.m_ProtoData = msg;
                NodeMessageDispatcher.SendNodeMessage(user.NodeName, retMsg);
            }
        }
Exemplo n.º 5
0
 //------------------------------------------------------------------------------------------------------
 private void HandleNodeRegister(NodeMessage msg, int handle, uint seq)
 {
     GameFrameworkMessage.NodeRegister nodeRegMsg = msg.m_NodeHeader as GameFrameworkMessage.NodeRegister;
     if (null != nodeRegMsg)
     {
         NodeMessage retMsg = new NodeMessage(LobbyMessageDefine.NodeRegisterResult);
         GameFrameworkMessage.NodeRegisterResult nodeRegResultMsg = new NodeRegisterResult();
         nodeRegResultMsg.m_IsOk = true;
         retMsg.m_NodeHeader     = nodeRegResultMsg;
         NodeMessageDispatcher.SendNodeMessage(handle, retMsg);
     }
 }
Exemplo n.º 6
0
 internal void SendWholeMail(MailInfo wholeMail, int validityPeriod)
 {
     wholeMail.m_MailGuid = GenMailGuid();
     wholeMail.m_SendTime = DateTime.Now;
     wholeMail.m_ExpiryDate = wholeMail.m_SendTime.AddDays(validityPeriod);
     m_WholeMails.Add(wholeMail);
     NodeMessage newMailMsg = new NodeMessage(LobbyMessageDefine.Msg_LC_NotifyNewMail);
     NodeMessageWithGuid headerData = new NodeMessageWithGuid();
     newMailMsg.m_NodeHeader = headerData;
     UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler;
     dataProcess.VisitUsers((UserInfo userInfo) => {
         headerData.m_Guid = userInfo.Guid;
         NodeMessageDispatcher.SendNodeMessage(userInfo.NodeName, newMailMsg);
     });
 }
Exemplo n.º 7
0
        private void HandleGetMailList(NodeMessage msg, int handle, uint seq)
        {
            GameFrameworkMessage.NodeMessageWithGuid getMailListMsg = msg.m_NodeHeader as GameFrameworkMessage.NodeMessageWithGuid;
            if (null != getMailListMsg)
            {
                if (m_GlobalProcessThread.CurActionNum > m_MaxGlobalActionNum)
                {
                    NodeMessage retMsg = new NodeMessage(LobbyMessageDefine.TooManyOperations, getMailListMsg.m_Guid);

                    NodeMessageDispatcher.SendNodeMessage(handle, retMsg);
                    return;
                }
                m_GlobalProcessThread.QueueAction(m_GlobalProcessThread.GetMailList, getMailListMsg.m_Guid);
            }
        }
Exemplo n.º 8
0
 internal void SendUserMail(MailInfo userMail, int validityPeriod)
 {
     userMail.m_MailGuid = GenMailGuid();
     userMail.m_SendTime = DateTime.Now;
     userMail.m_ExpiryDate = userMail.m_SendTime.AddDays(validityPeriod);
     List<MailInfo> mails = null;
     if (!m_UserMails.TryGetValue(userMail.m_Receiver, out mails)) {
         mails = new List<MailInfo>();
         m_UserMails.Add(userMail.m_Receiver, mails);
     }
     mails.Add(userMail);
     UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler;
     UserInfo user = dataProcess.GetUserInfo(userMail.m_Receiver);
     if (null != user && user.CurrentState != UserState.DropOrOffline) {
         NodeMessage newMailMsg = new NodeMessage(LobbyMessageDefine.Msg_LC_NotifyNewMail, userMail.m_Receiver);
         NodeMessageDispatcher.SendNodeMessage(user.NodeName, newMailMsg);
     }
 }
Exemplo n.º 9
0
 //------------------------------------------------------------------------------------------------------
 private void HandleUserHeartbeat(NodeMessage msg, int handle, uint seq)
 {
     GameFrameworkMessage.NodeMessageWithGuid heartbeatMsg = msg.m_NodeHeader as GameFrameworkMessage.NodeMessageWithGuid;
     if (null != heartbeatMsg)
     {
         if (null == m_UserProcessScheduler.GetUserInfo(heartbeatMsg.m_Guid))
         {
             NodeMessage retMsg = new NodeMessage(LobbyMessageDefine.KickUser, heartbeatMsg.m_Guid);
             NodeMessageDispatcher.SendNodeMessage(handle, retMsg);
             LogSys.Log(LOG_TYPE.DEBUG, "HandleUserHeartbeat, guid:{0} can't found, kick.", heartbeatMsg.m_Guid);
         }
         else
         {
             //echo
             NodeMessageDispatcher.SendNodeMessage(handle, msg);
             //逻辑处理
             m_UserProcessScheduler.GetUserThread(heartbeatMsg.m_Guid).QueueAction(m_UserProcessScheduler.DoUserHeartbeat, heartbeatMsg.m_Guid);
         }
     }
 }
Exemplo n.º 10
0
        internal void HighlightPrompt(UserInfo user, int dictId, params object[] args)
        {
            //0--null 1--int 2--float 3--string
            GameFrameworkMessage.Msg_CLC_StoryMessage protoData = new GameFrameworkMessage.Msg_CLC_StoryMessage();
            protoData.m_MsgId = string.Format("highlightprompt{0}", args.Length);
            GameFrameworkMessage.Msg_CLC_StoryMessage.MessageArg item0 = new GameFrameworkMessage.Msg_CLC_StoryMessage.MessageArg();
            item0.val_type = LobbyArgType.INT;
            item0.str_val  = dictId.ToString();
            protoData.m_Args.Add(item0);
            for (int i = 0; i < args.Length; ++i)
            {
                GameFrameworkMessage.Msg_CLC_StoryMessage.MessageArg item = new GameFrameworkMessage.Msg_CLC_StoryMessage.MessageArg();
                item.val_type = LobbyArgType.STRING;
                item.str_val  = args[i].ToString();
                protoData.m_Args.Add(item);
            }
            NodeMessage msg = new NodeMessage(LobbyMessageDefine.Msg_CLC_StoryMessage, user.Guid);

            msg.m_ProtoData = protoData;
            NodeMessageDispatcher.SendNodeMessage(user.NodeName, msg);
        }
Exemplo n.º 11
0
        internal void SendStoryMessage(UserInfo user, string msgId, params object[] args)
        {
            //0--null 1--int 2--float 3--string
            GameFrameworkMessage.Msg_CLC_StoryMessage protoData = new GameFrameworkMessage.Msg_CLC_StoryMessage();
            protoData.m_MsgId = msgId;
            for (int i = 0; i < args.Length; ++i)
            {
                object arg = args[i];
                GameFrameworkMessage.Msg_CLC_StoryMessage.MessageArg item = new GameFrameworkMessage.Msg_CLC_StoryMessage.MessageArg();
                if (null != arg)
                {
                    if (arg is int)
                    {
                        item.val_type = LobbyArgType.INT;
                    }
                    else if (arg is float)
                    {
                        item.val_type = LobbyArgType.FLOAT;
                    }
                    else
                    {
                        item.val_type = LobbyArgType.STRING;
                    }
                    item.str_val = arg.ToString();
                }
                else
                {
                    item.val_type = LobbyArgType.NULL;
                    item.str_val  = "";
                }
                protoData.m_Args.Add(item);
            }
            NodeMessage msg = new NodeMessage(LobbyMessageDefine.Msg_CLC_StoryMessage, user.Guid);

            msg.m_ProtoData = protoData;
            NodeMessageDispatcher.SendNodeMessage(user.NodeName, msg);
        }
Exemplo n.º 12
0
 internal void GetMailList(ulong userGuid)
 {
     UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler;
     UserInfo user = dataProcess.GetUserInfo(userGuid);
     if (null != user) {
         List<MailInfoForMessage> mailList = new List<MailInfoForMessage>();
         List<MailInfo> mails;
         if (m_UserMails.TryGetValue(userGuid, out mails)) {
             int ct = mails.Count;
             for (int ix = 0; ix < ct; ++ix) {
                 MailInfo mailInfo = mails[ix];
                 if (mailInfo.m_ExpiryDate >= DateTime.Now) {
                     MailInfoForMessage mailInfoForMsg = new MailInfoForMessage();
                     mailInfoForMsg.m_AlreadyRead = mailInfo.m_AlreadyRead;
                     mailInfoForMsg.m_MailGuid = mailInfo.m_MailGuid;
                     mailInfoForMsg.m_Title = mailInfo.m_Title;
                     mailInfoForMsg.m_Sender = mailInfo.m_Sender;
                     mailInfoForMsg.m_SendTime = mailInfo.m_SendTime.ToString("yyyyMMddHHmmss");
                     mailInfoForMsg.m_Text = mailInfo.m_Text;
                     mailInfoForMsg.m_Money = mailInfo.m_Money;
                     mailInfoForMsg.m_Gold = mailInfo.m_Gold;
                     int itemCt = mailInfo.m_Items.Count;
                     if (itemCt > 0) {
                         for (int index = 0; index < itemCt; ++index) {
                             MailItemForMessage mailItem = new MailItemForMessage();
                             mailItem.m_ItemId = mailInfo.m_Items[index].m_ItemId;
                             mailItem.m_ItemNum = mailInfo.m_Items[index].m_ItemNum;
                             mailInfoForMsg.m_Items.Add(mailItem);
                         }
                     }
                     mailList.Add(mailInfoForMsg);
                 }
             }
         }
         MailStateInfo mailStateInfo = user.MailStateInfo;
         //这里不对用户数据加锁,因为用户的邮件状态的改变都在这个线程完成(除上线时的数据加载)
         int wholeMailCt = m_WholeMails.Count;
         for (int ix = 0; ix < wholeMailCt; ++ix) {
             MailInfo mailInfo = m_WholeMails[ix];
             if (mailInfo.m_LevelDemand <= user.Level
               && mailInfo.m_SendTime >= user.CreateTime
               && mailInfo.m_ExpiryDate >= DateTime.Now
               && !mailStateInfo.IsAlreadyReceived(mailInfo.m_MailGuid)) {
                 if (!mailStateInfo.HaveMail(mailInfo.m_MailGuid)) {
                     mailStateInfo.AddMail(mailInfo.m_MailGuid, mailInfo.m_ExpiryDate);
                 }
                 MailInfoForMessage mailInfoForMsg = new MailInfoForMessage();
                 mailInfoForMsg.m_AlreadyRead = mailStateInfo.IsAlreadyRead(mailInfo.m_MailGuid);
                 mailInfoForMsg.m_MailGuid = mailInfo.m_MailGuid;
                 mailInfoForMsg.m_Title = mailInfo.m_Title;
                 mailInfoForMsg.m_Sender = mailInfo.m_Sender;
                 mailInfoForMsg.m_SendTime = mailInfo.m_SendTime.ToString("yyyyMMddHHmmss");
                 mailInfoForMsg.m_Text = mailInfo.m_Text;
                 mailInfoForMsg.m_Money = mailInfo.m_Money;
                 mailInfoForMsg.m_Gold = mailInfo.m_Gold;
                 int itemCt = mailInfo.m_Items.Count;
                 if (itemCt > 0) {
                     for (int index = 0; index < itemCt; ++index) {
                         MailItemForMessage mailItem = new MailItemForMessage();
                         mailItem.m_ItemId = mailInfo.m_Items[index].m_ItemId;
                         mailItem.m_ItemNum = mailInfo.m_Items[index].m_ItemNum;
                         mailInfoForMsg.m_Items.Add(mailItem);
                     }
                 }
                 mailList.Add(mailInfoForMsg);
             }
         }
         NodeMessage syncMailListMsg = new NodeMessage(LobbyMessageDefine.Msg_LC_SyncMailList, userGuid);
         GameFrameworkMessage.Msg_LC_SyncMailList protoMsg = new Msg_LC_SyncMailList();
         protoMsg.m_Mails.AddRange(mailList);
         syncMailListMsg.m_ProtoData = protoMsg;
         NodeMessageDispatcher.SendNodeMessage(user.NodeName, syncMailListMsg);
     }
 }