Esempio n. 1
0
        private void LoadAlternateAes()
        {
            if (!_aeTitlesLoaded)
            {
                lock (_syncLock)
                {
                    if (!_aeTitlesLoaded)
                    {
                        using (var context = new ServerExecutionContext())
                        {
                            var broker = context.ReadContext.GetBroker<IServerPartitionAlternateAeTitleEntityBroker>();
                            var criteria = new ServerPartitionAlternateAeTitleSelectCriteria();
                            criteria.ServerPartitionKey.EqualTo(this.Key);
                            _alternateAeTitles = broker.Find(criteria);
                        }

                        _aeTitlesLoaded = true;
                    }
                }
            }
        }
 public ServerPartitionAlternateAeTitleSelectCriteria(ServerPartitionAlternateAeTitleSelectCriteria other)
 : base(other)
 {}
 public ServerPartitionAlternateAeTitleSelectCriteria(ServerPartitionAlternateAeTitleSelectCriteria other)
     : base(other)
 {
 }
		/// <summary>
		/// Internal method for loading partition information fromt he database.
		/// </summary>
		private void LoadPartitions()
        {
            bool changed = false;
            lock (_partitionsLock)
            {
                try
                {
                    var templist = new Dictionary<string, ServerPartition>();
                    var tempAeList = new Dictionary<string, ServerPartitionAlternateAeTitle>();

                    IPersistentStore store = PersistentStoreRegistry.GetDefaultStore();
                    using (IReadContext ctx = store.OpenReadContext())
                    {
                        var broker = ctx.GetBroker<IServerPartitionEntityBroker>();
                        var criteria = new ServerPartitionSelectCriteria();
                        IList<ServerPartition> list = broker.Find(criteria);
                        foreach (ServerPartition partition in list)
                        {
                            if (IsChanged(partition))
                            {
                                changed = true;
                            }

                            templist.Add(partition.AeTitle, partition);
                        }

                        var aeBroker = ctx.GetBroker<IServerPartitionAlternateAeTitleEntityBroker>();
                        var aeCriteria = new ServerPartitionAlternateAeTitleSelectCriteria();
                        IList<ServerPartitionAlternateAeTitle> aeList = aeBroker.Find(aeCriteria);
                        foreach (ServerPartitionAlternateAeTitle partitionAe in aeList)
                        {
                            if (IsChanged(partitionAe))
                            {
                                changed = true;
                            }

                            tempAeList.Add(partitionAe.AeTitle, partitionAe);
                        }
                    }

                    if (_partitions.Count != templist.Count)
                        changed = true;
                    if (_alternateAeTitles.Count != tempAeList.Count)
                        changed = true;

                    _partitions = templist;
                    _alternateAeTitles = tempAeList;

                    if (changed && _changedListener != null)
                    {
                        EventsHelper.Fire(_changedListener, this, new ServerPartitionChangedEventArgs(this));
                    }
                }
                catch(Exception ex)
                {
                    Platform.Log(LogLevel.Error, ex,
                             "Unexpected exception when loading partitions, possible database error.  Operation will be retried later");
                }
            }// lock
        }