Пример #1
0
        public Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config)
        {
            this.Log  = providerRuntime.GetLogger(nameof(ArangoStorageProvider));
            this.Name = name;

            var databaseName = config.GetProperty("DatabaseName", "Orleans");
            var url          = config.GetProperty("Url", "http://localhost:8529");
            var username     = config.GetProperty("Username", "root");
            var password     = config.GetProperty("Password", "");
            var waitForSync  = config.GetBoolProperty("WaitForSync", true);

            collectionName = config.GetProperty("CollectionName", null);

            var serializationManager = providerRuntime.ServiceProvider.GetRequiredService <SerializationManager>();
            var grainRefConverter    = new GrainReferenceConverter(serializationManager, providerRuntime.GrainFactory);

            ArangoDatabase.ChangeSetting(s =>
            {
                s.Database              = databaseName;
                s.Url                   = url;
                s.Credential            = new NetworkCredential(username, password);
                s.DisableChangeTracking = true;
                s.WaitForSync           = waitForSync;
                s.Serialization.Converters.Add(grainRefConverter);
            });

            jsonSerializerSettings = new JsonSerializer();
            jsonSerializerSettings.Converters.Add(grainRefConverter);

            this.Database = new ArangoDatabase();

            return(Task.CompletedTask);
        }
Пример #2
0
        public Task Init(CancellationToken ct)
        {
            var grainRefConverter = new GrainReferenceConverter(TypeResolver, GrainFactory);

            JsonSerializerSettings = new JsonSerializer();
            JsonSerializerSettings.Converters.Add(grainRefConverter);

            ArangoDatabase.ChangeSetting(s =>
            {
                s.Database              = Options.DatabaseName;
                s.Url                   = Options.Url;
                s.Credential            = new NetworkCredential(Options.Username, Options.Password);
                s.DisableChangeTracking = true;
                s.WaitForSync           = Options.WaitForSync;
                s.Serialization.Converters.Add(grainRefConverter);
            });

            this.Database = new ArangoDatabase();

            return(Task.CompletedTask);
        }
        public async Task Init(string name, IProviderRuntime providerRuntime, IProviderConfiguration config)
        {
            this.Log  = providerRuntime.GetLogger(nameof(ArangoStorageProvider));
            this.Name = name;

            var databaseName = config.GetProperty("DatabaseName", "Orleans");
            var url          = config.GetProperty("Url", "http://localhost:8529");
            var username     = config.GetProperty("Username", "root");
            var password     = config.GetProperty("Password", "password");

            waitForSync = config.GetBoolProperty("WaitForSync", true);

            var grainRefConverter = new GrainReferenceConverter();

            settings = new JsonSerializer();
            settings.DefaultValueHandling  = DefaultValueHandling.Include;
            settings.MissingMemberHandling = MissingMemberHandling.Ignore;
            settings.ConstructorHandling   = ConstructorHandling.AllowNonPublicDefaultConstructor;
            settings.Converters.Add(grainRefConverter);

            if (!isInitialized)
            {
                ArangoDatabase.ChangeSetting(s =>
                {
                    s.Database              = databaseName;
                    s.Url                   = url;
                    s.Credential            = new NetworkCredential(username, password);
                    s.DisableChangeTracking = true;
                    s.WaitForSync           = waitForSync;
                    s.Serialization.Converters.Add(grainRefConverter);
                });
                isInitialized = true;
            }
            Database        = new ArangoDatabase();
            collectionsList = await Database.ListCollectionsAsync();
        }