using System; using System.Threading; using System.Runtime.InteropServices; using System.Diagnostics; using System.Linq; using System.Text; using System.Collections.Generic; using Blizzard.HabboHotel.Users; namespace Blizzard { public class LowPriorityWorker { private static double LastMacroAlert = BlizzardSystem.GetUnixTimeStamp(); public static void Process() { // allow 10 seconds for Uber to finish anything it may be doing, then enter regular loop while (true) { GC.Collect(); GC.Collect(GC.MaxGeneration); GC.WaitForPendingFinalizers(); SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, (UIntPtr)0xFFFFFFFF, (UIntPtr)0xFFFFFFFF); Process cProcess = System.Diagnostics.Process.GetCurrentProcess(); try { cProcess.MaxWorkingSet = cProcess.MaxWorkingSet; cProcess.MinWorkingSet = cProcess.MinWorkingSet; } catch { } try { StaticGame.VirtualUser = StaticGame.VirtualUser; foreach (KeyValuePair zUser in StaticGame.VirtualUser) { Habbo User = zUser.Value; if (User.InitedPing) { TimeSpan Diff = DateTime.Now - User.LastDateTime; ServerMessage Ping = new ServerMessage("@r"); User.SendMessage(Ping); if (Diff.Seconds > 7) { User.DisconnectMe(); } } } Thread.Sleep(6000); } catch { } /* int usedRAM = Convert.ToInt32(GC.GetTotalMemory(false)) / 1024; try { DateTime Now = DateTime.Now; TimeSpan TimeUsed = Now - General.ServerStarted; int UsersOnline = SocketConnection.AcceptedConnections; //General.Central.UpdateOnlineUsers(UsersOnline); Console.Title = "iEmulator 5 | Usuarios conectados: " + UsersOnline + ", RAM Usada: " + usedRAM + "KB, Tiempo en línea: " + TimeUsed.Minutes + " minutos, " + TimeUsed.Hours + " horas y " + TimeUsed.Days + " días"; #region Statistics /* int UsersOnline = UberEnvironment.GetGame().GetClientManager().ClientCount; int RoomsLoaded = UberEnvironment.GetGame().GetRoomManager().LoadedRoomsCount; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE server_status SET stamp = '" + UberEnvironment.GetUnixTimestamp() + "', status = '" + Status + "', users_online = '" + UsersOnline + "', rooms_loaded = '" + RoomsLoaded + "', server_ver = '" + UberEnvironment.PrettyVersion + "' LIMIT 1;"); } #endregion #region Effects UberEnvironment.GetGame().GetClientManager().CheckEffects(); #endregion #endregion foreach (KeyValuePair VirtualUser in Client.VirtualUser) { try { int UserId = VirtualUser.Key; Habbo MyUser = VirtualUser.Value; if (MyUser != null) { TimeSpan Span = DateTime.Now - MyUser.LastConnect; if (Span.Minutes > 1) { MyUser.DisconnectMe(); } } } catch { } } } catch (Exception e) { Console.WriteLine(e.ToString()); } */ } } #region Advanced Windows Programming [DllImport("kernel32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool SetProcessWorkingSetSize(IntPtr process, UIntPtr minimumWorkingSetSize, UIntPtr maximumWorkingSetSize); #endregion } }