public void Handle(Session session, MessageInfo messageInfo)
{
List<IMHandler> actions;
if (!this.handlers.TryGetValue(messageInfo.Opcode, out actions))
{
Log.Error($"消息 {messageInfo.Opcode} 没有处理");
return;
}
Type messageType = this.GetType(messageInfo.Opcode);
object message = MongoHelper.FromBson(messageType, messageInfo.MessageBytes, messageInfo.Offset, messageInfo.Count);
messageInfo.Message = message;
foreach (IMHandler ev in actions)
{
try
{
ev.Handle(session, messageInfo);
}
catch (Exception e)
{
Log.Error(e.ToString());
}
}
}