internal void GMLoadUser(string gmAccount, ulong userGuid, LobbyGmMessageDefine jsonMsgId, int nodeHandle)
        {
            string      key = userGuid.ToString();
            Msg_LD_Load msg = new Msg_LD_Load();

            msg.MsgId = (int)DataEnum.TableUserInfo;
            msg.PrimaryKeys.Add(key);
            Msg_LD_SingleLoadRequest reqUser = new Msg_LD_SingleLoadRequest();

            reqUser.MsgId    = (int)DataEnum.TableUserInfo;
            reqUser.LoadType = Msg_LD_SingleLoadRequest.LoadTypeEnum.LoadSingle;
            reqUser.Keys.Add(key);
            msg.LoadRequests.Add(reqUser);
            RequestLoad(msg, (ret) => {
                JsonMessage resultMsg = new JsonMessage(jsonMsgId, gmAccount);
                GameFrameworkMessage.Msg_LC_GmQueryUser protoData = new GameFrameworkMessage.Msg_LC_GmQueryUser();
                protoData.m_Result = GameFrameworkMessage.GmResultEnum.Failed;
                protoData.m_Info   = null;

                KeyString primaryKey = KeyString.Wrap(ret.PrimaryKeys);
                if (Msg_DL_LoadResult.ErrorNoEnum.Success == ret.ErrorNo)
                {
                    LogSys.Log(LOG_TYPE.INFO, "DataCache Load Success: Msg:{0}, Key:{1}", "GmUser", primaryKey);
                    TableUserInfo dataUser = null;
                    foreach (var result in ret.Results)
                    {
                        object _msg;
                        if (DbDataSerializer.Decode(result.Data, DataEnum2Type.Query(result.MsgId), out _msg))
                        {
                            DataEnum msgEnum = (DataEnum)result.MsgId;
                            switch (msgEnum)
                            {
                            case DataEnum.TableUserInfo:
                                dataUser = _msg as TableUserInfo;
                                break;

                            default:
                                LogSys.Log(LOG_TYPE.ERROR, ConsoleColor.Red, "Decode user data ERROR. Wrong message id. UserGuid:{0}, WrongId:{1}", userGuid, msgEnum);
                                break;
                            }
                        }
                    }
                    protoData.m_Result = GameFrameworkMessage.GmResultEnum.Success;
                    protoData.m_Info   = CreateGmUserInfo(dataUser);
                }
                else if (Msg_DL_LoadResult.ErrorNoEnum.NotFound == ret.ErrorNo)
                {
                    LogSys.Log(LOG_TYPE.INFO, ConsoleColor.Yellow, "DataCache Load NotFound: Msg:{0}, Key:{1}", "GmUser", primaryKey);
                }
                else
                {
                    LogSys.Log(LOG_TYPE.ERROR, "DataCache Load Failed: Msg:{0}, Key:{1}, ERROR:{2}", "GmUser", primaryKey, ret.ErrorInfo);
                }
                resultMsg.m_ProtoData = protoData;
                JsonGmMessageDispatcher.SendNodeMessage(nodeHandle, resultMsg);
            });
        }
示例#2
0
 public void FromProto(TableUserInfo proto)
 {
     m_TableUserInfo = proto;
     UpdatePrimaryKeys();
     UpdateForeignKeys();
     m_CreateTime     = DateTime.ParseExact(m_TableUserInfo.CreateTime, "yyyyMMddHHmmss", null);
     m_LastLogoutTime = DateTime.ParseExact(m_TableUserInfo.LastLogoutTime, "yyyyMMddHHmmss", null);
     m_IntDatas       = DataProtoUtility.SplitGeneralDictionary <string, int>(new char[] { ';' }, new char[] { ',' }, m_TableUserInfo.IntDatas);
     m_FloatDatas     = DataProtoUtility.SplitGeneralDictionary <string, float>(new char[] { ';' }, new char[] { ',' }, m_TableUserInfo.FloatDatas);
     m_StringDatas    = DataProtoUtility.SplitGeneralDictionary <string, string>(new char[] { ';' }, new char[] { ',' }, m_TableUserInfo.StringDatas);
 }
 private GameFrameworkMessage.GmUserInfo CreateGmUserInfo(TableUserInfo user)
 {
     if (null == user)
     {
         return(null);
     }
     GameFrameworkMessage.GmUserInfo gmUserInfo = new GameFrameworkMessage.GmUserInfo();
     gmUserInfo.m_Guid      = (ulong)user.Guid;
     gmUserInfo.m_AccountId = user.AccountId;
     gmUserInfo.m_Nickname  = user.Nickname;
     gmUserInfo.m_UserState = GameFrameworkMessage.GmStateEnum.Offline;
     //基础信息
     GameFrameworkMessage.GmUserBasic gmUserBasic = new GameFrameworkMessage.GmUserBasic();
     gmUserBasic.m_HeroId         = user.HeroId;
     gmUserBasic.m_Level          = user.Level;
     gmUserBasic.m_Money          = user.Money;
     gmUserBasic.m_Gold           = user.Gold;
     gmUserBasic.m_CreateTime     = user.CreateTime;
     gmUserBasic.m_LastLogoutTime = user.LastLogoutTime;
     gmUserInfo.m_UserBasic       = gmUserBasic;
     return(gmUserInfo);
 }
示例#4
0
 public void FromProto(TableUserInfo proto)
 {
     m_TableUserInfo = proto;
     UpdatePrimaryKeys();
     UpdateForeignKeys();
     m_CreateTime = DateTime.ParseExact(m_TableUserInfo.CreateTime,"yyyyMMddHHmmss",null);
     m_LastLogoutTime = DateTime.ParseExact(m_TableUserInfo.LastLogoutTime,"yyyyMMddHHmmss",null);
     m_IntDatas = DataProtoUtility.SplitGeneralDictionary<string,int>(new char[]{';'},new char[]{','}, m_TableUserInfo.IntDatas);
     m_FloatDatas = DataProtoUtility.SplitGeneralDictionary<string,float>(new char[]{';'},new char[]{','}, m_TableUserInfo.FloatDatas);
     m_StringDatas = DataProtoUtility.SplitGeneralDictionary<string,string>(new char[]{';'},new char[]{','}, m_TableUserInfo.StringDatas);
 }