public IAppSessionFactory GetFactory() { if (factory == null) { factory = new AppSessionFactory <U, T>(this); } return(factory); }
protected ThreadContextSessionProvider(ILogger logger, IAppSessionFactory sessionFactory) { _logger = logger; _sessions = new List <SessionInfo>(); _lockObj = new Object(); SessionFactory = sessionFactory.SessionFactory; }
public bool Configure <TPackageInfo, TPipelineFilter>(IConfiguration config, IServiceCollection services = null, Action <IAppSession, TPackageInfo> packageHandler = null) where TPackageInfo : class where TPipelineFilter : IPipelineFilter <TPackageInfo>, new() { if (services == null) { services = new ServiceCollection(); } if (config == null) { throw new ArgumentNullException(nameof(config)); } // prepare service collections _serviceCollection = services.AddOptions() // activate options .AddLogging() // add logging .Configure <ServerConfig>(config); // build service provider _serviceProvider = services.BuildServiceProvider(); // get server config var serverConfigOption = _serviceProvider.GetService <IOptions <ServerConfig> >(); if (serverConfigOption == null || serverConfigOption.Value == null) { throw new ArgumentException("Invalid configuration", nameof(config)); } Config = serverConfigOption.Value; // initialize logger factory LoggerFactory = _serviceProvider .GetService <ILoggerFactory>() .AddConsole(LogLevel.Debug); _logger = LoggerFactory.CreateLogger("SocketServer"); ConfigureListeners(Config); _appSessionFactory = new AppSessionFactory <TPackageInfo, TPipelineFilter>(packageHandler); return(_initialized = true); }