static void Main(string[] args) { Console.Title = "JAWE.Game"; //Console.WriteLine("Initialized MessageProcessor with {0} messages.", MessageProcessorOld.MessagesCount); Console.WriteLine("Initialized MessageTable with {0} handlers.", GameClient.MessageTable.HandlerCount); #if !DEBUG HearthBeat.Initialize(); #endif var server = new GameServer(); var peerServer = new UdpServer(5350, GameClient.WrEncoder); var natServer = new UdpServer(5351, null); server.Activate(); peerServer.Activate(); natServer.Activate(); Console.WriteLine("Hello World!"); // TODO Keep main thread active until the server is fully shutdown. while (true) { Console.ReadKey(true); } }
// for testing purposes we need a parameterless method because ElapsedEventArgs has only internal constructor private void Timer_Elapsed() { if (Debugger.IsAttached) { return; } var timerEnabled = _timer.Enabled; _timer.Enabled = false; try { HearthBeat?.Invoke(null, EventArgs.Empty); } catch (Exception ex) //logged { SnLog.WriteException(ex, EventMessage.Error.HealthCheck, EventId.RepositoryRuntime); } try { _dataHandler.CleanupSecurityActivities(); } catch (Exception ex) //logged { SnLog.WriteException(ex, EventMessage.Error.HealthCheck, EventId.RepositoryRuntime); } finally { _timer.Enabled = timerEnabled; } }