Example #1
0
 private void CheckForChangeInConsolidationConfig(AdminDatabase adminDb, PublicDatabase publicDb, ConsolidationParams consolidation)
 {
     if (adminDb.ConsolidationConfigChanged(consolidation) && publicDb.TablesExist())
     {
         throw new ApplicationException("Consolidation configuration has changed. Please rebuild the data store by deleting ADMIN and PUBLIC databases");
     }
 }
Example #2
0
 private void TruncateOnForcedRebuild(AdminDatabase adminDb, PublicDatabase publicDb)
 {
     if (_configuration.ForceRebuild)
     {
         adminDb.TruncateIfForcedRebuild();
         publicDb.TruncateIfForcedRebuild();
     }
 }
        /// <summary>
        /// 获取公有数据
        /// </summary>
        /// <typeparam name="T">数据类型</typeparam>
        /// <param name="key">键</param>
        /// <returns></returns>
        public static async Task <T> Get <T>(string key)
        {
            var data = await PublicDatabase.StringGetAsync(GetKey(key));

            if (data == RedisValue.Null)
            {
                return(default(T));
            }
            else
            {
                return(((byte[])data).FromSerialization <T>());
            }
        }
Example #4
0
        public void Execute()
        {
            OnProgressEvent(new VertoProgressEventArgs {
                ProgressString = "Executing controller", Section = ProcessingSection.Root
            });

            var adminDb = new AdminDatabase(_configuration);

            adminDb.ProgressEvent += AdminDbProgressEvent;

            var publicDb = new PublicDatabase(_configuration);

            publicDb.ProgressEvent += PublicDbProgressEvent;

            try
            {
                TruncateOnForcedRebuild(adminDb, publicDb);

                CheckForChangeInConsolidationConfig(adminDb, publicDb, _configuration.Consolidation);
                CheckForIdenticalAppKeys(publicDb, adminDb.ApplicationKey);

                // the order of these tasks is important!
                adminDb.ExtractToStage();
                adminDb.UpdateHistory();
                adminDb.AddHistoryFederationIds(new[] { RowStatus.Deleted }, 1);  // perform _before_ we federate
                adminDb.FederateResources();
                adminDb.ConsolidateResources();
                adminDb.AddHistoryFederationIds(new[] { RowStatus.Updated, RowStatus.Inserted }, 2);

                publicDb.PopulateStage(adminDb.ApplicationKey);
                publicDb.TransformStage();
            }
            finally
            {
                adminDb.FinishUp();
                OnProgressEvent(new VertoProgressEventArgs {
                    ProgressString = "Closing controller", Section = ProcessingSection.Root
                });
            }
        }
Example #5
0
 /// <summary>
 /// 发布数据
 /// </summary>
 /// <typeparam name="T">数据类型</typeparam>
 /// <param name="channelName">频道名称</param>
 /// <param name="data">待发布数据</param>
 public static async void Publish <T>(string channelName, T data)
 {
     await PublicDatabase.PublishAsync(channelName, data.ToSerialization());
 }
Example #6
0
 /// <summary>
 /// 添加公共数据
 /// </summary>
 /// <typeparam name="T">数据类型</typeparam>
 /// <param name="key">键</param>
 /// <param name="value">值</param>
 /// <param name="span">过期时间</param>
 public static async void Set <T>(string key, T value, TimeSpan span)
 {
     await PublicDatabase.StringSetAsync(GetKey(key), value.ToSerialization(), span);
 }
Example #7
0
 private void CheckForIdenticalAppKeys(PublicDatabase publicDb, Guid adminAppKey)
 {
     publicDb.CheckIdenticalAppKey(adminAppKey);
 }