Exemple #1
0
        public void AddEventListener(DataBaseEvents eventName, DataBaseEventListener listener)
        {
            this.dispatcher.Invoke(() =>
            {
                if (this.listenerHosts.ContainsKey(eventName) == true)
                {
                    if (this.listeners.ContainsKey(eventName) == false)
                    {
                        this.listeners[eventName] = new DataBaseEventListenerCollection();
                    }

                    this.listeners[eventName].Add(listener);

                    var dataBases    = this.cremaHost.Dispatcher.Invoke(() => this.cremaHost.DataBases.Where(item => item.IsLoaded).ToArray());
                    var listenerHost = this.listenerHosts[eventName];
                    foreach (var item in dataBases)
                    {
                        listenerHost.Subscribe(item, listener);
                    }
                }
                else
                {
                    throw new NotImplementedException();
                }
            });
        }
Exemple #2
0
 private void RemoveDataBaseEventListener(DataBaseEvents eventName, DataBaseEventListener listener)
 {
     if (this.Context.Properties[typeof(DataBaseEventListenerContext)] is DataBaseEventListenerContext context)
     {
         context.RemoveEventListener(eventName, listener);
     }
     else
     {
         throw new NotImplementedException();
     }
 }
        public void Unsubscribe(IDataBase dataBase, DataBaseEventListener listener)
        {
            var listeners = this.dataBaseToListeners[dataBase];

            listeners.Remove(listener);
            if (listeners.Any() == false)
            {
                this.OnUnsubscribe(dataBase);
                this.dataBaseToListeners.Remove(dataBase);
            }
        }
        public void Subscribe(IDataBase dataBase, DataBaseEventListener listener)
        {
            if (this.dataBaseToListeners.ContainsKey(dataBase) == false)
            {
                this.dataBaseToListeners[dataBase] = new DataBaseEventListenerCollection();
            }
            var listeners = this.dataBaseToListeners[dataBase];

            if (listeners.Any() == false)
            {
                this.OnSubscribe(dataBase);
            }
            listeners.Add(listener);
        }
        private void AddDataBaseEventListener(DataBaseEvents eventName, DataBaseEventListener listener)
        {
            if (this.Context.Properties.ContainsKey(typeof(DataBaseEventListenerContext)) == false)
            {
                this.eventListenerContext = new DataBaseEventListenerContext(this.cremaHost, this.eventListeners);
                this.Context.Properties[typeof(DataBaseEventListenerContext)] = this.eventListenerContext;
            }

            if (this.eventListenerContext != null)
            {
                this.eventListenerContext.AddEventListenerAsync(eventName, listener);
            }
            else
            {
                throw new NotImplementedException();
            }
        }