public void ClientOnlineTest_Online_CameInTeFuture()
        {
            var clientOnline = new ClientOnline(new MockedCurrentTime(new DateTime(2020, 5, 23, 2, 25, 0)));
            var result       = clientOnline.IsClientOnline(new DateTime(2020, 5, 23, 2, 26, 0));

            Assert.AreEqual(result, true);
        }
        public void ClientOnlineTest_Offline_LateReceive()
        {
            var clientOnline = new ClientOnline(new MockedCurrentTime(new DateTime(2020, 5, 23, 2, 25, 0)));
            var result       = clientOnline.IsClientOnline(new DateTime(2020, 5, 23, 2, 23, 0));

            Assert.AreEqual(result, false);
        }
        private SimpleHybirdLock lock_list;            // 列表锁

        private void AddClient(DeviceState device)
        {
            lock_list.Enter( );
            list.Add(device);
            lock_list.Leave( );

            ClientOnline?.Invoke(device);
        }
Ejemplo n.º 4
0
        private void TcpStateUpLine(AppSession state)
        {
            lockSessions.Enter( );
            appSessions.Add(state);
            lockSessions.Leave( );

            // 提示上线
            ClientOnline?.Invoke(state);

            AllClientsStatusChange?.Invoke(ClientCount);
            // 是否保存上线信息
            if (IsSaveLogClientLineChange)
            {
                LogNet?.WriteInfo(ToString( ), $"[{state.IpEndPoint}] Name:{ state?.LoginAlias } { StringResources.NetClientOnline }");
            }
        }
Ejemplo n.º 5
0
        private void TcpStateUpLine(AppSession state)
        {
            HybirdLockSockets.Enter( );
            All_sockets_connect.Add(state);
            HybirdLockSockets.Leave( );

            // 提示上线
            ClientOnline?.Invoke(state);
            // 是否保存上线信息
            if (IsSaveLogClientLineChange)
            {
                LogNet?.WriteInfo(ToString(), "IP:" + state.IpAddress + " Name:" + state?.LoginAlias + " " + StringResources.NetClientOnline);
            }
            // 计算客户端在线情况
            AsyncCoordinator.StartOperaterInfomation( );
        }
Ejemplo n.º 6
0
 public ClientStatusManager(IDistributedCache distributedCache)
 {
     _distributedCache = distributedCache;
     _clientOnline     = new ClientOnline(new CurrentTime());
 }