Example #1
0
        public TcpReactivePlatform(ITcpReactivePlatformSettings settings)
#pragma warning disable CA2000 // Dispose objects before losing scope. (Ownership transfer.)
            : this(settings, new TcpReactiveEnvironment())
#pragma warning restore CA2000
        {
            _selfContainedEnvironment = true;
            Environment.StartAsync(CancellationToken.None).Wait();
        }
        private static TcpMultiRoleArguments[] GetArgs(ITcpReactivePlatformSettings settings, params ReactiveServiceType[] group)
        {
            var args = new TcpMultiRoleArguments[group.Length];

            for (var i = 0; i < group.Length; ++i)
            {
                args[i] = group[i] switch
                {
                    ReactiveServiceType.MetadataService => new TcpMultiRoleArguments
                    {
                        Role = ReactiveServiceType.MetadataService,
                        Uri  = settings.MetadataUri,
                        Port = settings.MetadataPort,
                        Type = typeof(IReactiveStorageConnection),
                    },
                    ReactiveServiceType.QueryCoordinator => new TcpMultiRoleArguments
                    {
                        Role = ReactiveServiceType.QueryCoordinator,
                        Uri  = settings.QueryCoordinatorUri,
                        Port = settings.QueryCoordinatorPort,
                        Type = typeof(IRemotingReactiveServiceConnection),
                    },
                    ReactiveServiceType.QueryEvaluator => new TcpMultiRoleArguments
                    {
                        Role = ReactiveServiceType.QueryEvaluator,
                        Uri  = settings.QueryEvaluatorUri,
                        Port = settings.QueryEvaluatorPort,
                        Type = typeof(IReactiveQueryEvaluatorConnection),
                    },
                    ReactiveServiceType.MessagingService => new TcpMultiRoleArguments
                    {
                        Role = ReactiveServiceType.MessagingService,
                        Uri  = settings.MessagingUri,
                        Port = settings.MessagingPort,
                        Type = typeof(IReactiveMessagingConnection),
                    },
                    ReactiveServiceType.StateStoreService => new TcpMultiRoleArguments
                    {
                        Role = ReactiveServiceType.StateStoreService,
                        Uri  = settings.StateStoreUri,
                        Port = settings.StateStorePort,
                        Type = typeof(IReactiveStateStoreConnection),
                    },
                    ReactiveServiceType.KeyValueStoreService => new TcpMultiRoleArguments
                    {
                        Role = ReactiveServiceType.KeyValueStoreService,
                        Uri  = settings.KeyValueStoreUri,
                        Port = settings.KeyValueStorePort,
                        Type = typeof(ITransactionalKeyValueStoreConnection),
                    },
                    _ => throw new NotSupportedException(string.Format(CultureInfo.InvariantCulture, "Service type '{0}' not supported in the multi-role platform.", group[i])),
                };
            }

            return(args);
        }
        private static TcpMultiRoleRunnable[] GetRunnables(ITcpReactivePlatformSettings settings, params ReactiveServiceType[][] groups)
        {
            var runnables = new TcpMultiRoleRunnable[groups.Length];

            for (var i = 0; i < groups.Length; ++i)
            {
                runnables[i] = new TcpMultiRoleRunnable(GetArgs(settings, groups[i]));
            }

            return(runnables);
        }
Example #4
0
        public TcpReactivePlatform(ITcpReactivePlatformSettings settings, IReactiveEnvironment environment)
            : base(environment)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            _queryEvaluator   = new TcpQueryEvaluator(this, settings.GetExecutablePath("QueryEvaluatorHost"), settings.QueryEvaluatorPort, settings.QueryEvaluatorUri);
            _queryCoordinator = new TcpQueryCoordinator(this, settings.GetExecutablePath("QueryCoordinatorHost"), settings.QueryCoordinatorPort, settings.QueryCoordinatorUri);
        }
Example #5
0
        public TcpReactiveEnvironment(string azureConnectionString, ITcpReactivePlatformSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            StorageType           = MetadataStorageType.Azure;
            AzureConnectionString = azureConnectionString;
            MessagingService      = new TcpMessagingService(settings.GetExecutablePath("MessagingHost"), settings.MessagingPort, settings.MessagingUri);
            StateStoreService     = new TcpStateStoreService(settings.GetExecutablePath("StateStoreHost"), settings.StateStorePort, settings.StateStoreUri);
            KeyValueStoreService  = new TcpKeyValueStoreService(settings.GetExecutablePath("KeyValueStoreHost"), settings.KeyValueStorePort, settings.KeyValueStoreUri);
        }
 public TcpMultiRoleReactivePlatform(ITcpReactivePlatformSettings settings, params ReactiveServiceType[][] groups)
     : this(Validate(groups), GetRunnables(settings, Validate(groups)))
 {
 }