/// <summary>
 /// TCP调用服务端验证
 /// </summary>
 /// <param name="socket">TCP调用套接字</param>
 /// <param name="data">参数序列化数据</param>
 private void verify(socket socket, ref subArray <byte> data)
 {
     fastCSharp.net.returnValue.type returnType;
     try
     {
         fastCSharp.net.tcp.timeVerifyServer.input inputParameter = default(fastCSharp.net.tcp.timeVerifyServer.input);
         if (fastCSharp.emit.dataDeSerializer.DeSerialize(ref data, ref inputParameter))
         {
             fastCSharp.net.returnValue <fastCSharp.net.tcp.timeVerifyServer.output> returnValue = new returnValue <timeVerifyServer.output> {
                 Value = new fastCSharp.net.tcp.timeVerifyServer.output {
                     Ret = timeVerify.Verify(socket, inputParameter.randomPrefix, inputParameter.md5Data, ref inputParameter.ticks)
                 }
             };
             returnValue.Value.ticks = inputParameter.ticks;
             if (returnValue.Value.Ret)
             {
                 socket.SetVerifyMethod();
             }
             returnValue.Type = net.returnValue.type.Success;
             socket.SendStream(ref socket.identity, ref returnValue, default(tcp.commandServer.commandFlags));
             return;
         }
         returnType = fastCSharp.net.returnValue.type.ServerDeSerializeError;
     }
     catch (Exception error)
     {
         returnType = fastCSharp.net.returnValue.type.ServerException;
         fastCSharp.log.Error.Add(error, null, true);
     }
     socket.SendStream(ref socket.identity, returnType);
 }
            public bool Verify(fastCSharp.net.tcp.commandLoadBalancingServer.commandClient client)
#endif
            {
#if NOJIT
                fastCSharp.net.tcp.commandLoadBalancingServer.commandClient client = (fastCSharp.net.tcp.commandLoadBalancingServer.commandClient)clientObject;
#endif
                fastCSharp.net.tcp.timeVerifyServer.input input         = new fastCSharp.net.tcp.timeVerifyServer.input();
                fastCSharp.net.tcp.commandClient          commandClient = client.TcpCommandClient;
                fastCSharp.code.cSharp.tcpServer          attribute     = commandClient.Attribute;
                string verifyString = attribute.VerifyString;
                if (verifyString == null)
                {
                    return(client.Verify(ref input).Value.Ret);
                }
                ulong markData = 0;
                if (attribute.IsMarkData)
                {
                    markData = attribute.VerifyHashCode;
                }
                input.ticks = date.UtcNow.Ticks;
                do
                {
                    input.randomPrefix = random.Default.SecureNextULongNotZero();
                    while (input.randomPrefix == markData)
                    {
                        input.randomPrefix = random.Default.SecureNextULongNotZero();
                    }
                    commandClient.ReceiveMarkData = attribute.IsMarkData ? markData ^ input.randomPrefix : 0UL;
                    commandClient.SendMarkData    = 0;
                    input.MD5(verifyString);
                    long lastTicks = input.ticks;
                    fastCSharp.net.returnValue <fastCSharp.net.tcp.timeVerifyServer.output> isVerify = client.Verify(ref input);
                    if (isVerify.Value.Ret)
                    {
                        commandClient.SendMarkData = commandClient.ReceiveMarkData;
                        return(true);
                    }
                    if (isVerify.Type != fastCSharp.net.returnValue.type.Success || input.ticks <= lastTicks)
                    {
                        return(false);
                    }
                    ++input.ticks;
                    log.Error.Add("TCP客户端验证时间失败重试", null, false);
                }while (true);
            }
            /// <summary>
            /// TCP调用客户端验证
            /// </summary>
            /// <param name="input"></param>
            /// <returns>是否验证成功</returns>
            internal fastCSharp.net.returnValue <fastCSharp.net.tcp.timeVerifyServer.output> Verify(ref fastCSharp.net.tcp.timeVerifyServer.input input)
            {
                keyValue <tcp.commandClient.streamCommandSocket, fastCSharp.net.waitCall <fastCSharp.net.tcp.timeVerifyServer.output> > wait = getWait <fastCSharp.net.tcp.timeVerifyServer.output>(true);

                if (wait.Value != null)
                {
                    try
                    {
                        fastCSharp.net.tcp.timeVerifyServer.output output = new fastCSharp.net.tcp.timeVerifyServer.output();
                        wait.Key.Get(wait.Value, verifyCommand, ref input, ref output, false);
                        fastCSharp.net.returnValue <fastCSharp.net.tcp.timeVerifyServer.output> outputReturn;
                        wait.Value.Get(out outputReturn);
                        return(outputReturn);
                    }
                    catch (Exception error)
                    {
                        log.Error.Add(error, null, false);
                    }
                }
                return(default(fastCSharp.net.returnValue <fastCSharp.net.tcp.timeVerifyServer.output>));
            }