public void Set(TcpInternalServer.ServerSocketSender sender, AutoCSer.Net.TcpServer.ServerCallQueue queue) { this.Sender = sender; CommandIndex = sender.ServerSocket.CommandIndex; //CommandFlags = CommandIdentity.GetCommandFlags(); queue.Add(this); }
public void Set(TcpInternalServer.ServerSocketSender socket, TcpServer.ServerTaskType taskType) { this.Sender = socket; CommandIndex = socket.ServerSocket.CommandIndex; //CommandFlags = CommandIdentity.GetCommandFlags(); switch (taskType) { case TcpServer.ServerTaskType.ThreadPool: if (!System.Threading.ThreadPool.QueueUserWorkItem(ThreadPoolCall)) { AutoCSer.Threading.TaskSwitchThreadArray.Default.CurrentThread.Add(this); } return; case TcpServer.ServerTaskType.Timeout: AutoCSer.Threading.TaskSwitchThreadArray.Default.CurrentThread.Add(this); return; case TcpServer.ServerTaskType.TcpTask: TcpServer.ServerCallThreadArray.Default.CurrentThread.Add(this); return; case TcpServer.ServerTaskType.TcpQueue: TcpServer.ServerCallQueue.Default.Add(this); return; case TcpServer.ServerTaskType.TcpQueueLink: TcpServer.ServerCallQueue.DefaultLink.Add(this); return; case TcpServer.ServerTaskType.Queue: socket.Server.CallQueue.Add(this); return; case TcpServer.ServerTaskType.QueueLink: socket.Server.CallQueueLink.Add(this); return; } }
protected static bool verify(TcpInternalServer.ServerSocketSender sender, string userID, ulong randomPrefix, byte[] md5Data, ref long ticks) { TcpServer.ServerBase <TcpInternalServer.ServerAttribute> server = sender.Server; TcpServer.ServerBaseAttribute attribute = server.Attribute; if (TcpServer.TimeVerifyServer.CheckVerifyString(server, attribute)) { return(true); } return(verify(sender, randomPrefix, attribute.VerifyString, md5Data, ref ticks)); }
public void Set(TcpInternalServer.ServerSocketSender socket, TcpServer.ServerTaskType taskType, byte callQueueIndex) { this.Sender = socket; CommandIndex = socket.ServerSocket.CommandIndex; //CommandFlags = CommandIdentity.GetCommandFlags(); switch (taskType) { case TcpServer.ServerTaskType.Queue: socket.Server.CallQueueArray[callQueueIndex].Key.Add(this); return; case TcpServer.ServerTaskType.QueueLink: socket.Server.CallQueueArray[callQueueIndex].Value.Add(this); return; } }
protected static bool verify(TcpInternalServer.ServerSocketSender sender, ulong randomPrefix, byte[] md5Data, ref long ticks) { TcpServer.ServerBase <TcpInternalServer.ServerAttribute> server = sender.Server; TcpServer.ServerBaseAttribute attribute = server.Attribute; if (TcpServer.TimeVerifyServer.CheckVerifyString(server, attribute)) { return(true); } if (md5Data != null && md5Data.Length == 16) { if (ticks <= lastVerifyTicks && ticks != sender.TimeVerifyTicks) { if (sender.TimeVerifyTicks == 0) { while (System.Threading.Interlocked.CompareExchange(ref lastVerifyTickLock, 1, 0) != 0) { AutoCSer.Threading.ThreadYield.Yield(AutoCSer.Threading.ThreadYield.Type.TimeVerifyServerSetTicks); } sender.TimeVerifyTicks = ++lastVerifyTicks; System.Threading.Interlocked.Exchange(ref lastVerifyTickLock, 0); } ticks = sender.TimeVerifyTicks; return(false); } if (TcpServer.TimeVerifyServer.IsMd5(TcpServer.TimeVerifyServer.Md5(attribute.VerifyString, randomPrefix, ticks), md5Data) == 0) { if (ticks > lastVerifyTicks) { while (System.Threading.Interlocked.CompareExchange(ref lastVerifyTickLock, 1, 0) != 0) { AutoCSer.Threading.ThreadYield.Yield(AutoCSer.Threading.ThreadYield.Type.TimeVerifyServerSetTicks); } if (ticks > lastVerifyTicks) { lastVerifyTicks = ticks; } System.Threading.Interlocked.Exchange(ref lastVerifyTickLock, 0); } if (!attribute.IsMarkData || sender.SetMarkData(attribute.VerifyHashCode ^ randomPrefix)) { return(true); } } } ticks = 0; return(false); }
/// <summary> /// 时间验证函数 /// </summary> /// <param name="sender"></param> /// <param name="randomPrefix">随机前缀</param> /// <param name="verifyString">验证字符串</param> /// <param name="md5Data">MD5 数据</param> /// <param name="ticks">验证时钟周期</param> /// <returns>是否验证成功</returns> protected static bool verify(TcpInternalServer.ServerSocketSender sender, ulong randomPrefix, string verifyString, byte[] md5Data, ref long ticks) { if (md5Data != null && md5Data.Length == 16) { if (!timeVerifyTick.Check(ref ticks, ref sender.TimeVerifyTicks)) { return(false); } if (md5 == null) { md5 = new MD5CryptoServiceProvider(); } if (TcpServer.TimeVerifyServer.IsMd5(TcpServer.TimeVerifyServer.Md5(md5, verifyString, randomPrefix, ticks), md5Data) == 0) { timeVerifyTick.Set(ticks); if (!sender.Server.Attribute.IsMarkData || sender.SetMarkData(sender.Server.ServerAttribute.VerifyHashCode ^ randomPrefix)) { return(true); } } } ticks = 0; return(false); }
protected static bool verify(TcpInternalServer.ServerSocketSender sender, string userID, ulong randomPrefix, byte[] md5Data, ref long ticks) { TcpServer.ServerBase server = sender.Server; return(server.CheckVerifyString() || verify(sender, randomPrefix, server.Attribute.VerifyString, md5Data, ref ticks)); }