Example #1
0
 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;
        }
Example #3
0
        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);
        }