private RtConnectorMemoryMapped(
            IKeyValueMemory keyValueMemory,
            bool syncWithExistentTopics  = false,
            ILoggerFactory loggerFactory = null)
        {
            loggerFactory               = loggerFactory ?? Configuration.Configuration.DefaultLoggerFactory;
            this.rtTags                 = new HashSet <RtTagMemoryMapped>();
            this.logger                 = loggerFactory.CreateLogger($"{nameof(RtConnectorMemoryMapped)}");
            this.keyValueMemory         = keyValueMemory;
            this.syncWithExistentTopics = syncWithExistentTopics;
            this.extraTopics            = new HashSet <string>();

            this.keyValueMemory.KeysChanged += KeyValueMemory_KeysChanged;
            LoadTopics();
        }
        public override bool Disconnect()
        {
            keyValueMemory?.Flush();
            keyValueMemory?.Dispose();
            keyValueMemory = null;

            lock (rtTags)
            {
                foreach (var tag in rtTags)
                {
                    tag.RaiseStatusChanged(IsConnected);
                }
            }
            RaiseOnDisconnect(false);
            return(true);
        }