예제 #1
0
		static WebStats()
		{
			CMOptions = new WebStatsOptions();

			EventSink.ServerStarted += () => _Started = true;

			Clients = new List<WebStatsClient>();
			Snapshot = new Dictionary<IPAddress, List<NetState>>();

			Stats = new BinaryDataStore<string, WebStatsEntry>(VitaNexCore.SavesDirectory + "/WebStats", "Stats")
			{
				OnSerialize = SerializeStats,
				OnDeserialize = DeserializeStats
			};

			TimeSpan uptime = DateTime.UtcNow - Clock.ServerStart;

			Stats.Add("uptime", new WebStatsEntry(uptime, false));
			Stats.Add("uptime_peak", new WebStatsEntry(uptime, true));

			Stats.Add("online", new WebStatsEntry(0, false));
			Stats.Add("online_max", new WebStatsEntry(0, false));
			Stats.Add("online_peak", new WebStatsEntry(0, true));

			Stats.Add("unique", new WebStatsEntry(0, false));
			Stats.Add("unique_max", new WebStatsEntry(0, false));
			Stats.Add("unique_peak", new WebStatsEntry(0, true));

			Stats.Add("items", new WebStatsEntry(0, false));
			Stats.Add("items_max", new WebStatsEntry(0, false));
			Stats.Add("items_peak", new WebStatsEntry(0, true));

			Stats.Add("mobiles", new WebStatsEntry(0, false));
			Stats.Add("mobiles_max", new WebStatsEntry(0, false));
			Stats.Add("mobiles_peak", new WebStatsEntry(0, true));

			Stats.Add("guilds", new WebStatsEntry(0, false));
			Stats.Add("guilds_max", new WebStatsEntry(0, false));
			Stats.Add("guilds_peak", new WebStatsEntry(0, true));

			OnConnected += HandleConnection;

			_ActivityTimer = PollTimer.FromSeconds(
				60.0,
				() =>
				{
					if (!_Listening || Listener == null || Listener.Server == null || !Listener.Server.IsBound)
					{
						_Listening = false;
						ListenAsync();
					}

					Clients.RemoveRange(c => !c.Connected);
				},
				() => CMOptions.ModuleEnabled && Clients.Count > 0);
		}
예제 #2
0
        static WebStats()
        {
            CMOptions = new WebStatsOptions();

            EventSink.ServerStarted += () => _Started = true;

            Clients  = new List <WebStatsClient>();
            Snapshot = new Dictionary <IPAddress, List <NetState> >();

            Stats = new BinaryDataStore <string, WebStatsEntry>(VitaNexCore.SavesDirectory + "/WebStats", "Stats")
            {
                OnSerialize   = SerializeStats,
                OnDeserialize = DeserializeStats
            };

            TimeSpan uptime = DateTime.UtcNow - Clock.ServerStart;

            Stats.Add("uptime", new WebStatsEntry(uptime, false));
            Stats.Add("uptime_peak", new WebStatsEntry(uptime, true));

            Stats.Add("online", new WebStatsEntry(0, false));
            Stats.Add("online_max", new WebStatsEntry(0, false));
            Stats.Add("online_peak", new WebStatsEntry(0, true));

            Stats.Add("unique", new WebStatsEntry(0, false));
            Stats.Add("unique_max", new WebStatsEntry(0, false));
            Stats.Add("unique_peak", new WebStatsEntry(0, true));

            Stats.Add("items", new WebStatsEntry(0, false));
            Stats.Add("items_max", new WebStatsEntry(0, false));
            Stats.Add("items_peak", new WebStatsEntry(0, true));

            Stats.Add("mobiles", new WebStatsEntry(0, false));
            Stats.Add("mobiles_max", new WebStatsEntry(0, false));
            Stats.Add("mobiles_peak", new WebStatsEntry(0, true));

            Stats.Add("guilds", new WebStatsEntry(0, false));
            Stats.Add("guilds_max", new WebStatsEntry(0, false));
            Stats.Add("guilds_peak", new WebStatsEntry(0, true));

            OnConnected += HandleConnection;

            _ActivityTimer = PollTimer.FromSeconds(
                60.0,
                () =>
            {
                if (!_Listening || Listener == null || Listener.Server == null || !Listener.Server.IsBound)
                {
                    _Listening = false;
                    ListenAsync();
                }

                Clients.RemoveRange(c => !c.Connected);
            },
                () => CMOptions.ModuleEnabled && Clients.Count > 0);
        }
예제 #3
0
        static WebStats()
        {
            CMOptions = new WebStatsOptions();

            Snapshot = new Dictionary <IPAddress, List <Mobile> >();

            Stats = new BinaryDataStore <string, WebStatsEntry>(VitaNexCore.SavesDirectory + "/WebStats", "Stats")
            {
                Async         = true,
                OnSerialize   = SerializeStats,
                OnDeserialize = DeserializeStats
            };

            _Json = new Dictionary <string, object>();

            var uptime = VitaNexCore.UpTime;

            Stats["uptime"]      = new WebStatsEntry(uptime, false);
            Stats["uptime_peak"] = new WebStatsEntry(uptime, true);

            Stats["online"]      = new WebStatsEntry(0, false);
            Stats["online_max"]  = new WebStatsEntry(0, false);
            Stats["online_peak"] = new WebStatsEntry(0, true);

            Stats["unique"]      = new WebStatsEntry(0, false);
            Stats["unique_max"]  = new WebStatsEntry(0, false);
            Stats["unique_peak"] = new WebStatsEntry(0, true);

            Stats["items"]      = new WebStatsEntry(0, false);
            Stats["items_max"]  = new WebStatsEntry(0, false);
            Stats["items_peak"] = new WebStatsEntry(0, true);

            Stats["mobiles"]      = new WebStatsEntry(0, false);
            Stats["mobiles_max"]  = new WebStatsEntry(0, false);
            Stats["mobiles_peak"] = new WebStatsEntry(0, true);

            Stats["guilds"]      = new WebStatsEntry(0, false);
            Stats["guilds_max"]  = new WebStatsEntry(0, false);
            Stats["guilds_peak"] = new WebStatsEntry(0, true);

            Stats["memory"]      = new WebStatsEntry(0L, false);
            Stats["memory_max"]  = new WebStatsEntry(0L, false);
            Stats["memory_peak"] = new WebStatsEntry(0L, true);
        }