public NetworkPersistenceManager(Client client) { this.client = client; subscription = client.Subscribe(this); packages = new ConcurrentDictionary <uint, Awaiter>(); logger = (TypeContainer.GetOrNull <ILogger>() ?? NullLogger.Default).As(typeof(NetworkPersistenceManager)); awaiterPool = TypeContainer.Get <IPool <Awaiter> >(); packagePool = TypeContainer.Get <PackagePool>(); }
private static void Main(string[] args) { using (var typeContainer = TypeContainer.Get <ITypeContainer>()) { Startup.Register(typeContainer); Startup.ConfigureLogger(ClientType.GameServer); Network.Startup.Register(typeContainer); logger = (TypeContainer.GetOrNull <ILogger>() ?? NullLogger.Default).As("OctoAwesome.GameServer"); AppDomain.CurrentDomain.UnhandledException += (s, e) => { File.WriteAllText( Path.Combine(".", "logs", $"server-dump-{DateTime.Now:ddMMyy_hhmmss}.txt"), e.ExceptionObject.ToString()); logger.Fatal($"Unhandled Exception: {e.ExceptionObject}", e.ExceptionObject as Exception); logger.Flush(); }; manualResetEvent = new ManualResetEvent(false); logger.Info("Server start"); var fileInfo = new FileInfo(Path.Combine(".", "settings.json")); Settings settings; if (!fileInfo.Exists) { logger.Debug("Create new Default Settings"); settings = new Settings() { FileInfo = fileInfo }; settings.Save(); } else { logger.Debug("Load Settings"); settings = new Settings(fileInfo); } typeContainer.Register(settings); typeContainer.Register <ISettings, Settings>(settings); typeContainer.Register <ServerHandler>(InstanceBehaviour.Singleton); typeContainer.Get <ServerHandler>().Start(); Console.CancelKeyPress += (s, e) => manualResetEvent.Set(); manualResetEvent.WaitOne(); settings.Save(); } }
public NetworkUpdateManager(Client client, IUpdateHub updateHub) { this.client = client; this.updateHub = updateHub; logger = (TypeContainer.GetOrNull <ILogger>() ?? NullLogger.Default).As(typeof(NetworkUpdateManager)); entityNotificationPool = TypeContainer.Get <IPool <EntityNotification> >(); blockChangedNotificationPool = TypeContainer.Get <IPool <BlockChangedNotification> >(); blocksChangedNotificationPool = TypeContainer.Get <IPool <BlocksChangedNotification> >(); packagePool = TypeContainer.Get <PackagePool>(); hubSubscription = updateHub.Subscribe(this, DefaultChannels.Network); clientSubscription = client.Subscribe(this); }
public ServerHandler() { logger = (TypeContainer.GetOrNull <ILogger>() ?? NullLogger.Default).As(typeof(ServerHandler)); TypeContainer.Register <UpdateHub>(InstanceBehaviour.Singleton); TypeContainer.Register <IUpdateHub, UpdateHub>(InstanceBehaviour.Singleton); TypeContainer.Register <Server>(InstanceBehaviour.Singleton); TypeContainer.Register <SimulationManager>(InstanceBehaviour.Singleton); SimulationManager = TypeContainer.Get <SimulationManager>(); UpdateHub = TypeContainer.Get <IUpdateHub>(); server = TypeContainer.Get <Server>(); defaultManager = new DefaultCommandManager <ushort, CommandParameter, byte[]>(typeof(ServerHandler).Namespace + ".Commands"); }