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);
});
}