Exemplo n.º 1
0
 public async Task Handle(Session session, Entity entity, uint rpcId, ActorRequest message)
 {
     try
     {
         Request request = message.AMessage as Request;
         if (request == null)
         {
             Log.Error($"消息类型转换错误: {message.GetType().FullName} to {typeof (Request).Name}");
             return;
         }
         E e = entity as E;
         if (e == null)
         {
             Log.Error($"Actor类型转换错误: {entity.GetType().Name} to {typeof(E).Name}");
             return;
         }
         await this.Run(e, request, response =>
         {
             // 等回调回来,session可以已经断开了,所以需要判断session id是否为0
             if (session.IsDisposed)
             {
                 return;
             }
             ActorResponse actorResponse = new ActorResponse
             {
                 AMessage = response
             };
             session.Reply(rpcId, actorResponse);
         });
     }
     catch (Exception e)
     {
         throw new Exception($"解释消息失败: {message.GetType().FullName}", e);
     }
 }
Exemplo n.º 2
0
        public async Task Handle(Session session, Entity entity, uint rpcId, ActorRequest message)
        {
            Message msg = message.AMessage as Message;

            if (msg == null)
            {
                Log.Error($"消息类型转换错误: {message.GetType().FullName} to {typeof (Message).Name}");
                return;
            }
            E e = entity as E;

            if (e == null)
            {
                Log.Error($"Actor类型转换错误: {entity.GetType().Name} to {typeof(E).Name}");
                return;
            }

            await this.Run(e, msg);

            // 等回调回来,session可以已经断开了,所以需要判断session id是否为0
            if (session.IsDisposed)
            {
                return;
            }
            ActorResponse response = new ActorResponse();

            session.Reply(rpcId, response);
        }