예제 #1
0
        public static async Task Main(string[] args)
        {
            await Bootstrap.StartNode(args, KillRecpientType.Service, IpcApplicationType.Client,
                                      ab =>
            {
                ab.OnMemberUp((context, system, cluster) =>
                {
                    string ApplyMongoUrl(string baseUrl, string repoKey, SharpRepositoryConfiguration configuration)
                    {
                        var builder = new MongoUrlBuilder(baseUrl)
                        {
                            DatabaseName = repoKey, ApplicationName = context.HostingEnvironment.ApplicationName
                        };
                        var mongoUrl = builder.ToString();

                        configuration.AddRepository(new MongoDbRepositoryConfiguration(repoKey, mongoUrl)
                        {
                            Factory = typeof(MongoDbConfigRepositoryFactory)
                        });

                        return(mongoUrl);
                    }

                    ServiceRegistry.Get(system)
                    .RegisterService(new RegisterService(
                                         context.HostingEnvironment.ApplicationName,
                                         cluster.SelfUniqueAddress,
                                         ServiceTypes.Infrastructure));

                    var connectionstring = system.Settings.Config.GetString("akka.persistence.snapshot-store.mongodb.connection-string");
                    if (string.IsNullOrWhiteSpace(connectionstring))
                    {
                        LogManager.GetCurrentClassLogger().Error("No Mongo DB Connection provided: Shutdown");
                        system.Terminate();
                        return;
                    }

                    var config            = new SharpRepositoryConfiguration();
                    var fileSystemBuilder = new VirtualFileFactory();

                    ApplyMongoUrl(connectionstring, CleanUpManager.RepositoryKey, config);

                    var url = ApplyMongoUrl(connectionstring, RepositoryManager.RepositoryKey, config);
                    RepositoryManager.InitRepositoryManager(system,
                                                            new RepositoryManagerConfiguration(config, fileSystemBuilder.CreateMongoDb(url),
                                                                                               DataTransferManager.New(system, "Repository-DataTransfer")));

                    url = ApplyMongoUrl(connectionstring, DeploymentManager.RepositoryKey, config);
                    DeploymentManager.InitDeploymentManager(system,
                                                            new DeploymentConfiguration(config,
                                                                                        fileSystemBuilder.CreateMongoDb(url),
                                                                                        DataTransferManager.New(system, "Deployment-DataTransfer"),
                                                                                        RepositoryApi.CreateProxy(system)));

                    ApplyMongoUrl(connectionstring, ServiceManagerDeamon.RepositoryKey, config);
                    ServiceManagerDeamon.Init(system, config);
                })
                .OnMemberRemoved((_, system, _) => system.Terminate());
            }, true)
예제 #2
0
        public void ShouldFindSourceByName()
        {
            var vf = new VirtualFileFactory(_vfa);

            var provider = vf.GetProvider("Normal");

            Assert.That(provider, Is.Not.Null);
        }
 public bool IsValid(string path)
 => IsValid(VirtualFileFactory.CrerateLocal(path));
 public SoftwareRepository Read(IActorRefFactory factory, string path)
 => Read(factory, VirtualFileFactory.CrerateLocal(path));
예제 #5
0
        public void ShouldFindAllSourceNames()
        {
            var vf = new VirtualFileFactory(_vfa);

            Assert.That(vf.AvailableProviders.Count(), Is.EqualTo(3));
        }
 public VirtualFileProviderViewAdapter(IConfigurationLocator configLocator)
 {
     var config = VirtualFileAccessorSectionGroup.Get(configLocator);
     _factory = new VirtualFileFactory(config);
 }
예제 #7
0
 public static IVirtualFileSystem CreateMongoDb(this VirtualFileFactory factory, GridFSBucket bucket)
 => new GridFSVistualFileSystem(bucket);
예제 #8
0
        public static IVirtualFileSystem CreateMongoDb(this VirtualFileFactory factory, string bucket)
        {
            var mongoUrl = MongoUrl.Create(bucket);

            return(new GridFSVistualFileSystem(new GridFSBucket(new MongoClient(bucket).GetDatabase(mongoUrl.DatabaseName))));
        }