/// <summary> /// TcpRegister TCP调用服务端 /// </summary> /// <param name="attribute">TCP 调用服务器端配置信息</param> /// <param name="verify">套接字验证委托</param> /// <param name="value">TCP 服务目标对象</param> /// <param name="onCustomData">自定义数据包处理</param> /// <param name="log">日志接口</param> public TcpInternalServer(AutoCSer.Net.TcpInternalServer.ServerAttribute attribute = null, Func <System.Net.Sockets.Socket, bool> verify = null, AutoCSer.Net.TcpRegister.Server value = null, Action <SubArray <byte> > onCustomData = null, AutoCSer.Log.ILog log = null) : base(attribute ?? (attribute = AutoCSer.Net.TcpInternalServer.ServerAttribute.GetConfig("TcpRegister", typeof(AutoCSer.Net.TcpRegister.Server))), verify, null, onCustomData, log, 1, true, false) { Value = value ?? new AutoCSer.Net.TcpRegister.Server(); setCommandData(4); setVerifyCommand(1); setCommand(2); setCommand(3); Value.SetTcpServer(this); if (attribute.IsAutoServer) { Start(); } }
/// <summary> /// 刷新时间 /// </summary> /// <param name="state"></param> private static void refreshTime(object state) { DateTime now = DateTime.Now; Now = now; UtcNow = now.localToUniversalTime(); timer.Change(TimerInterval = 1000L - now.Millisecond, -1); #if !Serialize CHECK: long nextSecondTicks = NextSecondTicks; if (nextSecondTicks <= Now.Ticks) { if (Interlocked.CompareExchange(ref NextSecondTicks, nextSecondTicks + SecondTicks, nextSecondTicks) == nextSecondTicks) { Interlocked.Increment(ref CurrentSeconds); try { AutoCSer.Threading.ThreadPool.CheckExit(); if ((Flag & OnTimeFlag.LogFile) != 0) { for (AutoCSer.Log.File fileLog = AutoCSer.Log.File.Files.End; fileLog != null; fileLog = fileLog.DoubleLinkPrevious) { fileLog.OnTimer(); } } if ((Flag & OnTimeFlag.TcpServerSocketTimerLink) != 0) { for (AutoCSer.Net.SocketTimeoutLink.TimerLink timeout = AutoCSer.Net.SocketTimeoutLink.TimerLink.TimeoutEnd; timeout != null; timeout = timeout.DoubleLinkPrevious) { timeout.OnTimer(); } } if ((Flag & OnTimeFlag.TcpClientCheckTimer) != 0) { for (AutoCSer.Net.TcpServer.ClientCheckTimer timeout = AutoCSer.Net.TcpServer.ClientCheckTimer.TimeoutEnd; timeout != null; timeout = timeout.DoubleLinkPrevious) { timeout.OnTimer(); } } if ((Flag & (OnTimeFlag.TcpSimpleClientCheckTimer)) != 0) { TcpSimpleServerOnTime(Flag); } if ((Flag & (OnTimeFlag.CacheFile | OnTimeFlag.CacheDistributionTimeout | OnTimeFlag.CacheTimeout)) != 0) { CacheOnTime(Flag); } if ((Flag & OnTimeFlag.SqlCountMember) != 0) { SqlOnTime(Flag); } if ((Flag & (OnTimeFlag.HttpSession | OnTimeFlag.CreateFlieTimeoutWatcher)) != 0) { WebViewOnTime(Flag); } AutoCSer.Threading.TimerTask.Default.OnTimer(Now); if ((Flag & OnTimeFlag.TcpRegister) != 0) { for (AutoCSer.Net.TcpRegister.Server server = AutoCSer.Net.TcpRegister.Server.ServerEnd; server != null; server = server.DoubleLinkPrevious) { server.OnTimer(); } } if (OnTime != null) { OnTime(); } } catch (Exception error) { AutoCSer.Log.Pub.Log.Add(AutoCSer.Log.LogType.Error, error); } } goto CHECK; } #endif }