示例#1
0
 /// <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();
     }
 }
示例#2
0
            /// <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
            }