예제 #1
0
        public ModuleServer(IRemoteMessageDispatcher messageDispatcher,
                            IMetadataAccessor metadataAccessor,
                            IModuleManager runningModules,
                            IServiceProvider serviceProvider,
                            IOptions <ModuleServerOptions> optionsAccessor,
                            ILoggerFactory loggerFactory)
        {
            if (messageDispatcher == null)
            {
                throw new ArgumentNullException(nameof(messageDispatcher));
            }

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

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

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

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

            var options = optionsAccessor.Value ?? new ModuleServerOptions();

            if (string.IsNullOrWhiteSpace(options.Prefix))
            {
                throw new ArgumentException("A url prefix must be specified.");
            }

            _messageDispatcher = messageDispatcher;
            _metadataAccessor  = metadataAccessor;
            _moduleManager     = runningModules;
            _serviceProvider   = serviceProvider;
            _loggerFactory     = loggerFactory;
            _logger            = _loggerFactory?.CreateLogger <ModuleServer>();

            _disposeHelper = new AsyncDisposeHelper(DiposeInternalAsync, AsyncDisposeHelperOptions.Synchronize);
            _prefix        = options.Prefix;
            Features.Set <IHttpRequestFeature>(new HttpRequestFeature());
            Features.Set <IHttpResponseFeature>(new HttpResponseFeature());
        }
        public ModuleManifestProvider(IModulePrefixLookup modulePrefixLookup, IRemoteMessageDispatcher messageDispatcher, ILogger <ModuleManifestProvider> logger = null)
        {
            if (modulePrefixLookup == null)
            {
                throw new ArgumentNullException(nameof(modulePrefixLookup));
            }

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

            _modulePrefixLookup = modulePrefixLookup;
            _messageDispatcher  = messageDispatcher;
            _logger             = logger;

            _manifestCache = new ConcurrentDictionary <ModuleIdentifier, BlazorModuleManifest>();
        }
예제 #3
0
        public ModuleHostHttpMiddleware(RequestDelegate next, IRemoteMessageDispatcher dispatcher, IPathMapper pathMapper)
        {
            if (next == null)
            {
                throw new ArgumentNullException(nameof(next));
            }

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

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

            _next       = next;
            _dispatcher = dispatcher;
            _pathMapper = pathMapper;
        }
예제 #4
0
        public DebugPort(IServiceProvider serviceProvider,
                         IAddressConversion <IPEndPoint> addressConversion,
                         IOptions <ModularityOptions> optionsAccessor,
                         IRemoteMessageDispatcher messageDispatcher,
                         ILoggerFactory loggerFactory = null)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

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

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

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

            var options = optionsAccessor.Value ?? new ModularityOptions();

            _serviceProvider   = serviceProvider;
            _messageDispatcher = messageDispatcher;
            _loggerFactory     = loggerFactory;
            _logger            = _loggerFactory?.CreateLogger <DebugPort>();

            var endPoint = addressConversion.Parse(options.DebugConnection);

            _tcpHost              = new TcpListener(endPoint);
            _connectionProcess    = new AsyncProcess(ConnectProcedure);
            _initializationHelper = new AsyncInitializationHelper <IPEndPoint>(InitializeInternalAsync);
            _disposeHelper        = new AsyncDisposeHelper(DisposeInternalAsync);
        }