Esempio n. 1
0
        /// <summary>
        /// The method unsubscribes specified listener with a given identifier
        /// </summary>
        /// <param name="listenerId">An identifier of a listener</param>

        public void Unsubscribe(uint listenerId)
        {
            if (listenerId >= mListeners.Count)
            {
                throw new ListenerDoesntExistException(listenerId);
            }

            mListeners[(int)listenerId] = new TListenerEntry()
            {
            };

            mFreeEntriesRegistry.Push((int)listenerId);
        }
Esempio n. 2
0
        /// <summary>
        /// The method subscribes a listener to the manager
        /// </summary>
        /// <param name="eventListener">A reference to IEventListener implementation</param>
        /// <typeparam name="T">A type of an event</typeparam>
        /// <returns></returns>

        public uint Subscribe <T>(IEventListener eventListener)
            where T : struct
        {
            if (eventListener == null)
            {
                throw new ArgumentNullException("eventListener");
            }

            int firstFreeEntryIndex = mFreeEntriesRegistry.Count > 0 ? mFreeEntriesRegistry.Pop() : mListeners.Count;

            if (firstFreeEntryIndex >= mListeners.Count)
            {
                mListeners.Add(new TListenerEntry {
                });
            }

            mListeners[firstFreeEntryIndex] = new TListenerEntry()
            {
                mEventType = typeof(T),
                mListener  = eventListener
            };

            return((uint)firstFreeEntryIndex);
        }