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; } } } }
/// <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 }