public SharedClusterWorker(
     ILogger <SharedClusterWorker> logger,
     IClusterSettings clusterSettings,
     IDescriptorProvider descriptorProvider,
     ISharedClusterProviderFactory clusterProvider,
     ISharedSetupRootActors setupRootActors   = default,
     ISubscriptionFactory subscriptionFactory = default,
     IMainWorker mainWorker           = default,
     IMetricsProvider metricsProvider = default
     )
 {
     _logger                  = logger;
     _setupRootActors         = setupRootActors;
     _clusterSettings         = clusterSettings;
     _mainWorker              = mainWorker;
     _descriptorProvider      = descriptorProvider;
     _clusterProvider         = clusterProvider;
     _subscriptionFactory     = subscriptionFactory;
     _metricsProvider         = metricsProvider;
     _cancellationTokenSource = new CancellationTokenSource();
 }
예제 #2
0
 public DescriptorManager(IDescriptorProvider provider)
 {
     _provider    = provider;
     _descriptors = new Dictionary <string, WorkItemDescriptor>();
 }
예제 #3
0
 public WorkItemManager(IDataProvider dataProvider, IDescriptorProvider descriptorProvider)
 {
     DataProvider      = dataProvider;
     DescriptorManager = new DescriptorManager(descriptorProvider);
     ValidationManager = new ValidationManager(this, DescriptorManager);
 }
예제 #4
0
 public CustomActivityParser(IDescriptorProvider descriptorProvider, ITypeInfoProvider typeInfoProvider)
 {
     _compositeActivityParser = new CompositeActivityParser(descriptorProvider, typeInfoProvider);
     _typeInfoProvider        = typeInfoProvider ?? throw new ArgumentNullException(nameof(typeInfoProvider));
 }
예제 #5
0
 public static DataDescriptor GetDescriptor(this IDescriptorProvider validateAttribute, Type type)
 => _getDescriptorMethods
 .GetOrAdd(type, t => GenerateGetDescriptorMethod(type))
 .Invoke(validateAttribute);
 public DescriptorContainer(IDescriptorProvider parent)
 {
     _parent = parent;
 }
예제 #7
0
        public static (ClusterConfig, GrpcCoreRemoteConfig) CreateClusterConfig(IClusterSettings clusterSettings, IClusterProvider clusterProvider, IIdentityLookup identityLookup, IDescriptorProvider descriptorProvider, ILogger _logger)
        {
            //var portStr = Environment.GetEnvironmentVariable("PROTOPORT") ?? $"{RemoteConfigBase.AnyFreePort}";

            var clusterName = clusterSettings.ClusterName;

            var hostip         = Environment.GetEnvironmentVariable("PROTOHOST");
            var host           = clusterSettings.ClusterHost;
            var advertisedHost = clusterSettings.ClusterHost;
            var port           = clusterSettings.ClusterPort;

            if ("protohost".Equals(host))
            {
                host           = hostip;
                advertisedHost = hostip;
                _logger.LogDebug($"Using PROTOHOST");
            }
            _logger.LogDebug($"BindTo to {host} port {port}");
            _logger.LogDebug($"WithAdvertisedHost to {advertisedHost}");

            FileDescriptor[] descriptors = descriptorProvider.GetDescriptors();


            // TOOD: This doesn't seem to work. Why?
            List <ChannelOption> options = new List <ChannelOption>()
            {
                new ChannelOption(ChannelOptions.MaxSendMessageLength, (100 * 1024 * 1024)),
                new ChannelOption(ChannelOptions.MaxReceiveMessageLength, (100 * 1024 * 1024))
            };


            GrpcCoreRemoteConfig remoteConfig = GrpcCoreRemoteConfig.BindTo(host, port)
                                                .WithEndpointWriterMaxRetries(0)
                                                .WithRemoteDiagnostics(true)
                                                .WithAdvertisedHost(advertisedHost)
                                                .WithProtoMessages(descriptors)
                                                .WithChannelOptions(options);

            var clusterConfig = ClusterConfig.Setup(clusterName, clusterProvider, identityLookup);

            return(clusterConfig, remoteConfig);
        }