Пример #1
0
        public SuperSocketService(IServiceProvider serviceProvider, IOptions <ServerOptions> serverOptions, ILoggerFactory loggerFactory, IChannelCreatorFactory channelCreatorFactory)
        {
            _serverOptions         = serverOptions;
            Name                   = serverOptions.Value.Name;
            _serviceProvider       = serviceProvider;
            _pipelineFilterFactory = GetPipelineFilterFactory();
            _serverOptions         = serverOptions;
            _loggerFactory         = loggerFactory;
            _logger                = _loggerFactory.CreateLogger("SuperSocketService");
            _channelCreatorFactory = channelCreatorFactory;
            _packageHandler        = serviceProvider.GetService <IPackageHandler <TReceivePackageInfo> >();
            _errorHandler          = serviceProvider.GetService <Func <IAppSession, PackageHandlingException <TReceivePackageInfo>, ValueTask <bool> > >();
            _sessionHandlers       = serviceProvider.GetService <SessionHandlers>();

            if (_errorHandler == null)
            {
                _errorHandler = OnSessionErrorAsync;
            }

            // initialize session factory
            _sessionFactory = serviceProvider.GetService <ISessionFactory>();

            if (_sessionFactory == null)
            {
                _sessionFactory = new DefaultSessionFactory();
            }


            InitializeMiddlewares();
        }
Пример #2
0
        public SuperSocketService(IServiceProvider serviceProvider, IOptions <ServerOptions> serverOptions, ILoggerFactory loggerFactory, IChannelCreatorFactory channelCreatorFactory)
        {
            _serverOptions         = serverOptions;
            Name                   = serverOptions.Value.Name;
            _serviceProvider       = serviceProvider;
            _pipelineFilterFactory = GetPipelineFilterFactory();
            _loggerFactory         = loggerFactory;
            _logger                = _loggerFactory.CreateLogger("SuperSocketService");
            _channelCreatorFactory = channelCreatorFactory;
            _sessionHandlers       = serviceProvider.GetService <SessionHandlers>();
            // initialize session factory
            _sessionFactory = serviceProvider.GetService <ISessionFactory>() ?? new DefaultSessionFactory();

            InitializeMiddlewares();

            var packageHandler = serviceProvider.GetService <IPackageHandler <TReceivePackageInfo> >()
                                 ?? _middlewares.OfType <IPackageHandler <TReceivePackageInfo> >().FirstOrDefault();

            if (packageHandler == null)
            {
                Logger.LogWarning("The PackageHandler cannot be found.");
            }
            else
            {
                var errorHandler = serviceProvider.GetService <Func <IAppSession, PackageHandlingException <TReceivePackageInfo>, ValueTask <bool> > >()
                                   ?? OnSessionErrorAsync;

                _packageHandlingScheduler = serviceProvider.GetService <IPackageHandlingScheduler <TReceivePackageInfo> >()
                                            ?? new SerialPackageHandlingScheduler <TReceivePackageInfo>();
                _packageHandlingScheduler.Initialize(packageHandler, errorHandler);
            }
        }
Пример #3
0
        public SuperSocketService(IServiceProvider serviceProvider, IOptions <ServerOptions> serverOptions, IChannelCreatorFactory channelCreatorFactory)
        {
            var serverOptionsValue = IocUnity.Get <ServerOptions>();

            _serverOptions = new ServerConfigOptions <ServerOptions>(serverOptionsValue);
            //_serverOptions = serverOptions;
            Name                   = serverOptions.Value.Name;
            _serviceProvider       = serviceProvider;
            _pipelineFilterFactory = GetPipelineFilterFactory();

            _channelCreatorFactory = channelCreatorFactory;
            _packageHandler        = serviceProvider.GetService <IPackageHandler <TSessionData, TReceivePackageInfo> >();
            _errorHandler          = serviceProvider.GetService <Func <IAppSession <TSessionData>, PackageHandlingException <TReceivePackageInfo>, ValueTask <bool> > >();
            _sessionHandlers       = serviceProvider.GetService <SessionHandlers <TSessionData> >();

            if (_errorHandler == null)
            {
                _errorHandler = OnSessionErrorAsync;
            }

            // initialize session factory
            _sessionFactory = serviceProvider.GetService <ISessionFactory <TSessionData> >();

            if (_sessionFactory == null)
            {
                _sessionFactory = new DefaultSessionFactory <TSessionData>();
            }


            InitializeMiddlewares();
        }
Пример #4
0
        public SuperSocketService(IServiceProvider serviceProvider, IOptions <ServerOptions> serverOptions)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            if (serverOptions == null)
            {
                throw new ArgumentNullException(nameof(serverOptions));
            }

            Name                            = serverOptions.Value.Name;
            Options                         = serverOptions.Value;
            _serviceProvider                = serviceProvider;
            _pipelineFilterFactory          = GetPipelineFilterFactory();
            _loggerFactory                  = serviceProvider.GetService <ILoggerFactory>();
            _logger                         = _loggerFactory.CreateLogger("SuperSocketService");
            _channelCreatorFactory          = serviceProvider.GetService <IChannelCreatorFactory>() ?? new TcpChannelCreatorFactory(serviceProvider);
            _sessionHandlers                = serviceProvider.GetService <SessionHandlers>();
            _sessionFactory                 = serviceProvider.GetService <ISessionFactory>();
            _packageHandlingContextAccessor = serviceProvider.GetService <IPackageHandlingContextAccessor <TReceivePackageInfo> >();
            InitializeMiddlewares();

            var packageHandler = serviceProvider.GetService <IPackageHandler <TReceivePackageInfo> >()
                                 ?? _middlewares.OfType <IPackageHandler <TReceivePackageInfo> >().FirstOrDefault();

            if (packageHandler == null)
            {
                Logger.LogWarning("The PackageHandler cannot be found.");
            }
            else
            {
                var errorHandler = serviceProvider.GetService <Func <IAppSession, PackageHandlingException <TReceivePackageInfo>, ValueTask <bool> > >()
                                   ?? OnSessionErrorAsync;

                _packageHandlingScheduler = serviceProvider.GetService <IPackageHandlingScheduler <TReceivePackageInfo> >()
                                            ?? new SerialPackageHandlingScheduler <TReceivePackageInfo>();
                _packageHandlingScheduler.Initialize(packageHandler, errorHandler);
            }
        }