|
|
|
|
@ -6,9 +6,11 @@ using System; |
|
|
|
|
using System.Threading.Tasks; |
|
|
|
|
using CoreWCF.Configuration; |
|
|
|
|
using GBase.Api.Communication; |
|
|
|
|
using GBase.Logging; |
|
|
|
|
using GBase.Logging.Factories; |
|
|
|
|
using GBase.Logging.Interfaces; |
|
|
|
|
using GBase.Server.Factories; |
|
|
|
|
using GBase.Server.Interfaces; |
|
|
|
|
using LightweightIocContainer.Interfaces; |
|
|
|
|
using Microsoft.AspNetCore; |
|
|
|
|
using Microsoft.AspNetCore.Hosting; |
|
|
|
|
using Microsoft.Extensions.Configuration; |
|
|
|
|
@ -19,28 +21,40 @@ namespace GBase.Server |
|
|
|
|
{ |
|
|
|
|
static async Task Main(string[] args) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
ILog log = new Log(); |
|
|
|
|
Bootstrapper bootstrapper = new Bootstrapper(); |
|
|
|
|
IIocContainer kernel = bootstrapper.BootstrapContainer(); |
|
|
|
|
|
|
|
|
|
ILogFactory logFactory = kernel.Resolve<ILogFactory>(); |
|
|
|
|
ILog log = logFactory.Create(); |
|
|
|
|
log.InitializeLog(); |
|
|
|
|
log.AddLogger(new ConsoleLogger()); |
|
|
|
|
|
|
|
|
|
IGBaseServerSettings serverSettings = new GBaseServerSettings(); |
|
|
|
|
IConsoleLoggerFactory consoleLoggerFactory = kernel.Resolve<IConsoleLoggerFactory>(); |
|
|
|
|
log.AddLogger(consoleLoggerFactory.Create()); |
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
IGBaseServerSettingsFactory gBaseServerSettingsFactory = kernel.Resolve<IGBaseServerSettingsFactory>(); |
|
|
|
|
IGBaseServerSettings serverSettings = gBaseServerSettingsFactory.Create(); |
|
|
|
|
await serverSettings.ParseArguments(args); |
|
|
|
|
|
|
|
|
|
log.AddLogger(new FileLogger(serverSettings.LogFilePath, serverSettings.LogFileName)); |
|
|
|
|
IFileLoggerFactory fileLoggerFactory = kernel.Resolve<IFileLoggerFactory>(); |
|
|
|
|
log.AddLogger(fileLoggerFactory.Create(serverSettings.LogFilePath, serverSettings.LogFileName)); |
|
|
|
|
|
|
|
|
|
IWebHost host = CreateWebHostBuilder(serverSettings).Build(); |
|
|
|
|
await host.RunAsync(); |
|
|
|
|
|
|
|
|
|
host.Dispose(); //TestMe: Check if this destroys the server while it is running |
|
|
|
|
await log.DisposeAsync(); |
|
|
|
|
} |
|
|
|
|
catch (Exception ex) //TODO: decide what to do in this case |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine(ex); |
|
|
|
|
throw; |
|
|
|
|
} |
|
|
|
|
finally |
|
|
|
|
{ |
|
|
|
|
await log.DisposeAsync(); |
|
|
|
|
kernel.Dispose(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static IWebHostBuilder CreateWebHostBuilder(IGBaseServerSettings serverSettings) |
|
|
|
|
|