internal void ReceiveMail(ulong userGuid, ulong mailGuid)
{
UserProcessScheduler dataProcess = UserServer.Instance.UserProcessScheduler;
UserInfo user = dataProcess.GetUserInfo(userGuid);
if (null != user)
{
List <TableMailInfoWrap> mails;
if (m_UserMails.TryGetValue((long)userGuid, out mails))
{
if (null != mails)
{
TableMailInfoWrap info = null;
int ct = mails.Count;
int index = 0;
for (; index < ct; ++index)
{
if (mails[index].Guid == mailGuid)
{
info = mails[index];
break;
}
}
if (null != info && CheckBagCapacity(user, info))
{
mails.RemoveAt(index);
ExtractMailAttachment(info, userGuid);
}
}
}
MailStateInfo mailStateInfo = user.MailStateInfo;
if (!mailStateInfo.IsAlreadyReceived(mailGuid))
{
int wholeCt = m_WholeMails.Count;
for (int index = 0; index < wholeCt; ++index)
{
TableMailInfoWrap info = m_WholeMails[index];
if (info.Guid == mailGuid)
{
if (CheckBagCapacity(user, info))
{
mailStateInfo.ReceiveMail(mailGuid);
if (info.LevelDemand <= user.Level && info.SendDate >= user.CreateTime && info.ExpiryDate >= DateTime.Now)
{
ExtractMailAttachment(info, userGuid);
}
}
}
}
}
}
}