rd-net/RdFramework/Impl/RdEntitiesRegistrar.cs (22 lines of code) (raw):

using System.Collections.Generic; using JetBrains.Diagnostics; using JetBrains.Lifetimes; using JetBrains.Rd.Base; using JetBrains.Rd.Util; namespace JetBrains.Rd.Impl; public class RdEntitiesRegistrar { private readonly Dictionary<RdId, IRdDynamic> myMap = new(); internal void Register(Lifetime lifetime, RdId rdId, IRdDynamic dynamic) { Assertion.Assert(!rdId.IsNil); myMap.BlockingAddUnique(lifetime, myMap, rdId, dynamic); } public bool TryGetEntity(RdId rdId, out IRdDynamic entity) { lock (myMap) { return myMap.TryGetValue(rdId, out entity); } } }