예제 #1
0
        public static ValueTask <IModuleMetadata> GetMetadataAsync(this IMetadataAccessor metadataAccessor, CancellationToken cancellation = default)
        {
            if (metadataAccessor == null)
            {
                throw new ArgumentNullException(nameof(metadataAccessor));
            }

            var entryAssembly = Assembly.GetEntryAssembly();

            return(metadataAccessor.GetMetadataAsync(entryAssembly, cancellation));
        }
예제 #2
0
        public DebugConnection(IAddressConversion <IPEndPoint> addressConversion,
                               IMetadataAccessor metadataAccessor,
                               IOptions <ModuleDebugOptions> optionsAccessor,
                               IOptions <RemoteMessagingOptions> remoteOptionsAccessor,
                               IServiceProvider serviceProvider,
                               ILoggerFactory loggerFactory = null)
        {
            if (addressConversion == null)
            {
                throw new ArgumentNullException(nameof(addressConversion));
            }

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

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

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

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

            _addressConversion = addressConversion;
            _metadataAccessor  = metadataAccessor;
            _options           = optionsAccessor.Value ?? new ModuleDebugOptions();
            _remoteOptions     = remoteOptionsAccessor.Value ?? new RemoteMessagingOptions();
            _serviceProvider   = serviceProvider;
            _loggerFactory     = loggerFactory;

            _logger    = _loggerFactory?.CreateLogger <DebugConnection>();
            _debugPort = new Lazy <IPEndPoint>(() => _addressConversion.Parse(_options.DebugConnection), LazyThreadSafetyMode.PublicationOnly);

            _tcpClientLazy = new DisposableAsyncLazy <TcpClient>(
                factory: CreateTcpClientAsync,
                disposal: tcpClient => { tcpClient.Dispose(); return(Task.CompletedTask); },
                options: DisposableAsyncLazyOptions.Autostart | DisposableAsyncLazyOptions.ExecuteOnCallingThread);

            _proxyHostLazy = new DisposableAsyncLazy <ProxyHost>(
                factory: CreateProxyHostAsync,
                disposal: proxyHost => proxyHost.DisposeAsync(),
                options: DisposableAsyncLazyOptions.Autostart | DisposableAsyncLazyOptions.ExecuteOnCallingThread);
        }
예제 #3
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 BlazorModuleManifestProvider(Assembly appAssembly, IMetadataAccessor metadataAccessor)
        {
            if (appAssembly == null)
            {
                throw new ArgumentNullException(nameof(appAssembly));
            }

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

            _appAssembly      = appAssembly;
            _metadataAccessor = metadataAccessor;
        }
예제 #5
0
        public ConfigurationManager(
            IConfigurationProvider conf,
            IEnvironment environment,
            ICache cache
            )
        {
            _metadataPath      = conf.GetString(MetadataDirKey, "conf/serializer/");
            _includeNullValues = conf.GetBoolean(IncludeNullValuesKey, false);
            Enum.TryParse(conf.GetString(FieldFormattingMethodKey, FieldFormatterType.LOWER_UNDERSCORE.ToString()),
                          true, out _formatterType);
            Enum.TryParse(conf.GetString(FieldAccessTypeKey, FieldAccessType.PROPERTY.ToString()), true,
                          out _accessType);
            Enum.TryParse(conf.GetString(DateFormatKey, DateFormatType.ISO8601.ToString()), true, out _dateFormatType);

            _metadataAccessor = environment.IsProd() ? new CacheMetadataAccessor(cache) : new FileMetadataAccessor();

            _metadataAccessor.SetMetadataPath(_metadataPath);
        }
 public SerializerYamlMetadataProvider(IMetadataAccessor metadataAccessor)
 {
     _metadataAccessor = metadataAccessor;
     _metadatas        = new Dictionary <string, Model.Metadata>();
 }