예제 #1
0
파일: Server.cs 프로젝트: e2wugui/zeze
        public override void DispatchProtocol(Protocol p, ProtocolFactoryHandle factoryHandle)
        {
            // 防止Client不进入加密,直接发送用户协议。
            if (false == IsHandshakeProtocol(p.TypeId))
            {
                p.Sender.VerifySecurity();
            }

            if (p.TypeId == gnet.Provider.ModuleRedirect.TypeId_)
            {
                if (null != factoryHandle.Handle)
                {
                    var modureRecirect = p as gnet.Provider.ModuleRedirect;
                    if (null != Zeze && false == factoryHandle.NoProcedure)
                    {
                        Zeze.TaskOneByOneByKey.Execute(
                            modureRecirect.Argument.HashCode,
                            () => global::Zeze.Util.Task.Call(
                                Zeze.NewProcedure(
                                    () => factoryHandle.Handle(p),
                                    p.GetType().FullName,
                                    p.UserState),
                                p,
                                (p, code) => p.SendResultCode(code)
                                )
                            );
                    }
                    else
                    {
                        Zeze.TaskOneByOneByKey.Execute(modureRecirect.Argument.HashCode,
                                                       () => global::Zeze.Util.Task.Call(
                                                           () => factoryHandle.Handle(p),
                                                           p,
                                                           (p, code) => p.SendResultCode(code)
                                                           )
                                                       );
                    }
                }
                else
                {
                    logger.Log(SocketOptions.SocketLogLevel, "Protocol Handle Not Found. {0}", p);
                }
                return;
            }

            base.DispatchProtocol(p, factoryHandle);
        }
예제 #2
0
파일: Service.cs 프로젝트: e2wugui/zeze
 // 用来派发异步rpc回调。
 public virtual void DispatchRpcResponse(Protocol rpc,
                                         Func <Protocol, int> responseHandle,
                                         ProtocolFactoryHandle factoryHandle)
 {
     if (null != Zeze && false == factoryHandle.NoProcedure)
     {
         global::Zeze.Util.Task.Run(
             Zeze.NewProcedure(
                 () => responseHandle(rpc),
                 rpc.GetType().FullName + ":Response",
                 rpc.UserState));
     }
     else
     {
         global::Zeze.Util.Task.Run(() => responseHandle(rpc), rpc);
     }
 }
예제 #3
0
파일: Service.cs 프로젝트: e2wugui/zeze
 public virtual void DispatchProtocol(Protocol p, ProtocolFactoryHandle factoryHandle)
 {
     if (null != factoryHandle.Handle)
     {
         if (null != Zeze && false == factoryHandle.NoProcedure)
         {
             global::Zeze.Util.Task.Run(
                 Zeze.NewProcedure(
                     () => factoryHandle.Handle(p),
                     p.GetType().FullName,
                     p.UserState), p);
         }
         else
         {
             global::Zeze.Util.Task.Run(() => factoryHandle.Handle(p), p);
         }
     }
     else
     {
         logger.Log(SocketOptions.SocketLogLevel, "Protocol Handle Not Found. {0}", p);
     }
 }